Ext.apply的用法[通俗易懂]

Ext.apply的用法[通俗易懂]Ext核心API–Ext.apply与Ext.applyIf<scripttype="text/javascript"></script><scripttype="text/javascript"></script>Ext中apply及applyIf方法的应用        apply及applyI…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Ext 核心 API — Ext.apply 与 Ext.applyIf <script type=”text/javascript”></script><script type=”text/javascript”></script>

Ext中apply及applyIf方法的应用
 
        apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝。不同的是apply将会覆盖目标对象中的属性,而applyIf只拷贝目标对象中没有而源对象中有的属性。
apply方法的签名为“apply( Object obj, Object config, Object defaults ) : Object”,该方法包含三个参数,第一个参数是要拷贝的目标对象,第二个参数是拷贝的源对象,第三个参数是可选的,表示给目标对象提供一个默认值。可以简单的理解成把第三个参数(如果有的话)及第二个参数中的属性拷贝给第一个参数对象。看下面的代码:

    <script>

       Ext.onReady(function(){

           var b1 = {

              p1:“p1 value”,

             

              p2:“p2 value”,

             

              f1:function(){
alert(this.p1)},

             

              f2:function(){
alert(this.p2)}

           };

          

           var b2 = new Object();

          

           b2.p1 = “b2 value”;

          

           Ext.apply(b2,b1);

          

           b2.f1(); // 这个挺有意思,不仅属性会复制,连b1中的f1方法也可以被复制和使用

// ( 有点费话,因为f1和f2就是以属性的形式生命的 )

          

           b2.f2();

          

//会使得b2中包含一个p3的属性,值为“p3 value”。

           Ext.apply(b2,b1,{
p3:“p3 value”});

 

      

           alert(b2.p3)     

 

       });

    </script>

在上面的代码中,Ext.apply(b2,b1)这一语句把b1的属性拷贝到了b2对象中,因此调用b2的f1方法可以弹出”p2 value”的提示信息。尽管b2对象已经包含了p2属性值,但拷贝后该属性值会被覆盖。可以在调用apply方法时,在第三个参数中指定拷贝属性的默认值,比如下面的代码:
Ext.apply(b2,b1,{p3:"p3 value"});

            alert(b2.p3);
这样会使得b2中包含一个p3的属性,值为”p3 value”。
applyIf方法的功能跟apply一样,只是不会拷贝那些在目标对象及源对象都存在的属性。比如把前面演示apply方法的代码改成applyIf,如下:
Ext.applyIf(b2,b1);

            b2.f1();
由于b2中已经存在了p2属性,因此,b2.f1()方法中引用this.p2的时候,得到的是”b2 value”,而不是在b1中定义的”p2 value”。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164718.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用Python读取CSV文件的5种方式

    用Python读取CSV文件的5种方式典型的数据集stocks.csv:一个股票的数据集,其实就是常见的表格数据。有股票代码,价格,日期,时间,价格变动和成交量。这个数据集其实就是一个表格数据,有自己的头部和身体。第一招:简单的读取我们先来看一种简单读取方法,先用csv.reader()函数读取文件的句柄f生成一个csv的句柄,其实就是一个迭代器,我们看一下这个reader的源码:喂给reader一个可迭代对象或者是文件的object,然后返回一个可迭代对象。首先读取csv文件,然后用csv.reader生成一个csv迭代器

    2022年7月21日
  • 网络入门及制作双绞线实验结论_计算机网络双绞线包括哪几种类型

    网络入门及制作双绞线实验结论_计算机网络双绞线包括哪几种类型专业软件工程姓名小何学长实验目的:1. 掌握RJ-45双绞线的直通线和交叉线的制作方法,了解其应用场合。2. 利用测线仪测试网线是否正常。实验原理:1. 双绞线简介双绞线是最常用的网络传输媒体,其型号10BBASE-T、100BASE-T是指10Mbps、100Mbps以基带传输方式工作的双绞线。按信号线外面有无屏蔽保护层分为:屏蔽双绞线——STP,有金属网丝套作为屏蔽层,无分类;无屏蔽双绞线——UTP,没有屏蔽层,有多个分类,如UTP-3,UTP-5,UTP-5+多…

    2022年10月28日
  • 异步fifo与同步fifo_161是同步还是异步清零

    异步fifo与同步fifo_161是同步还是异步清零异步FIFO设计

    2022年8月13日
  • 【Unity3D基础教程】给初学者看的Unity教程(零):如何学习Unity3D「建议收藏」

    【Unity3D基础教程】给初学者看的Unity教程(零):如何学习Unity3D「建议收藏」作者:王选易,出处:http://www.cnblogs.com/neverdie/欢迎转载,也请保留这段声明。如果你喜欢这篇文章,请点推荐。谢谢!Unity3D有什么优势Unity3D是一个跨

    2022年8月6日
  • matplotlib无法显示图片_pycharm不出图

    matplotlib无法显示图片_pycharm不出图在学习Matplotlib的时候,在Pycharm中运行的时候不会弹出画的图像。首先你运行之后最小化pycharm,看看是不是已经出来了,只是没有自己弹到最顶层。 代码如下: importnumpyasnpimportmatplotlib.pyplotaspltdefmain():#线的绘制x=np.linspace(-np.p…

    2022年8月25日
  • 让 VAGRANT 启动并运行起来

    让 VAGRANT 启动并运行起来

    2021年11月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号