[ExtJS] 一文搞懂 apply 使用
在ExtJS的库中,常看到apply关键字。现在就简单介绍下apply在ExtJS用法
1.Ext.apply 和 Ext.applyIf
apply (object,config,[defaults])将的所有属性复制config
到指定的object(将config对象 完全复制到 object)
object: 对象
属性的接收者。
config: 对象
属性的主要来源。
defaults: 默认值对象 (可选)
一个也将应用于默认值的对象。
使用例子:
Ext.apply({a:'1'}, {a: '2',b:'1'});
//输出 {a: "2", b: "1"}
Ext.apply({c:'3'}, {a: '2',b:'1'})
//输出 {c: "3", a: "2", b: "1"}
Ext.apply:若object对象存在与 config对象同名的key,就用 config对象的属性值 覆盖掉object对象里的属性值
applyIf (object,config)
如果尚未将config的所有属性复制到对象,则将它们复制。
object: 对象
属性的接收者。
config: 对象
属性的主要来源。
使用例子:
Ext.applyIf({a:'1'}, {a: '2',b:'1'})
//输出 {a: "1", b: "1"}
Ext.applyIf({c:'3'}, {a: '2',b:'1'})
//输出 {c: "3", a: "2", b: "1"}
Ext.applyIf:若 object对象中不含有 config对象的属性,就将其从config对象中复制过来
2.控件的apply使用
有时我们在开发中,想要自定义一些控件,这些控件里可能包含config配置项,config里又含有子组件,例如下面的例子:
Ext.define('A',{extend:'Ext.Container',xtype:'a',config:{child:{xtype:'textfield'}}
})
上述代码中,我们定义了一个A类,这个A类是个带有输入框的container容器,希望通过getChild()能获取到textfield 实例对象。
若是我们实例化一下,这个控件A:
var objA = Ext.widget('a');//实例化A类
objA.getChild();//访问自定义的子孩子
//输出 {}
发现输出的是{};
若我们在实例化时加上child配置项:
var objA = Ext.widget('a',{child:{xtype:'textfield'}});//实例化A类
objA.getChild();//访问自定义的子孩子
//输出 {xtype: "textfield"}
可以看到,输出的是个object对象,并不是我们想要的textfield的实例。
这个时候,就要用apply构造方法改造下A类:
Ext.define('A',{extend:'Ext.Container',xtype:'a',config:{child:{xtype:'textfield'}},applyChild(child) {if (child) {child = Ext.create(Ext.apply({}, child));//child是指child的配置项}else child = Ext.create(Ext.apply({}, {xtype: 'textfield'}));return child;}
})
在config里声明的属性,Extjs会帮助其生成 get和set访问器,详见 ExtJs config的使用,除此之外,还有apply方法
config:{aBC:'' }
就会有个
applyABC() 和 updateABC()方法
apply方法的基类,就是ExtJS的 Function类里的apply
Function apply
apply ( thisArg, argsArray )
使用apply,您可以编写一个方法,然后在另一个对象中继承它,而不必为新对象重写该方法。其他解释详见apply
- thisArg: 对象
为函数function调用提供的值。请注意,这可能不是该方法看到的实际值:如果该方法是非严格模式代码中的函数,则null和undefined将被全局对象替换,原始值将被装箱。
- argsArray: 数组
类似于object的数组,指定应调用fun的参数,如果不向函数提供任何参数,则为null或undefined。
例子:
有个方法或者叫函数 Product ,里面有商品名 和 价格 以及一个显示方法
function Product(name, price) {this.name = name;this.price = price; this.show = function() {console.log('价格是'+ price);}
}
此时若我们在其他地方 建了个食物的类,它也是商品,也想具有上面的属性,就可以用apply了
function Food(name, price) {Product.apply(this, arguments);this.category = 'food';
}
若此时我们实例化一下Food,
var cheese = new Food('feta', 5);
输出一下cheese
可以看到food类有product类的方法
[ExtJS] 一文搞懂 apply 使用相关推荐
- 一文搞懂 Traefik2.1 的使用
原文链接:一文搞懂 Traefik2.1 的使用 一文搞懂 Traefik2.1 的使用 核心概念 安装 ACME 中间件 灰度发布 流量复制 TCP 简单 TCP 服务 带 TLS 证书的 TCP ...
- 一文搞懂 Raft 算法
一文搞懂Raft算法 正文 raft是工程上使用较为广泛的强一致性.去中心化.高可用的分布式协议.在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos.但Paxos是:少数真正理 ...
- 一文搞懂RNN(循环神经网络)
基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...
- 一文搞懂 Python 的 import 机制
一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...
- python语言语句快的标记是什么_一文搞懂Python程序语句
原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...
- 一文搞懂 Java 线程中断
转载自 一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...
- 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm
***一文搞懂HMM(隐马尔可夫模型)*** 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序, ...
- 一文搞懂如何使用Node.js进行TCP网络通信
摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...
- 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass
本文将对蓝图类UBlueprint的几个UClass成员变量NativeClass.GeneratedClass.BlueprintClass.ParentClass进行比较深入的讲解,看完之后对蓝图 ...
最新文章
- 获取AppStore上架后的应用版本号
- android ListView 局部刷新
- SHA-1算法c语言实现
- Uva 10004(二分图的判定)
- smokeping with tcpping centos 7 环境
- c语言飞机订票系统作用,C语言飞机订票系统方案
- windows cmd中的%~dp0
- OA多级审批流程表设计方案(干货满满)
- Ubuntu系统中文输入法配置安装(谷歌拼音)
- 如何安装浏览器插件,一篇文章全搞定
- 计算机代表的数字,计算机中数的表示
- 511遇见易语言子程序参考的作用
- 关于Linux和Windows一个对比
- 华师大计算机考研825,2020华东师范大学计算机/软件专业课改考408
- KVM 自定义存储与磁盘挂载
- excel多次使用格式刷的方法步骤
- verilog中initial语句的基本使用
- JavaScript奇淫技巧:把JS编译成exe
- Swift Publisher 5 for Mac(快速版面设计软件)
- 视频教程-Cocos2d-x 游戏开发详解-Cocos
热门文章
- 中企海外周报 | Vivo进一步拓展中东和非洲市场;一加将携首款概念机亮相2020 CES展...
- 了解模型预测控制5--如何加速运行MPC
- Golang Devops项目开发(1)
- 一道归并排序题的解析
- LabVIEW开发的测试设备软件代码和PLC程序
- Kivy之Label标签标记markup
- mondrian olap 示例_Mondrian数据库olap应用文档
- 外贸英语900句之 询盘 Inquiry
- 最详尽翻译:Rules of Machine Learning: Best Practices for ML Engineering
- python通过ip池爬_python 爬虫 代理ip池(适合初学者)