透析Extjs的Ext.js源码(一)对象属性的添加和设置
关键字: extjs- /**
- * 分析Ext.js
- */
- /**
- * 第一部分:对象属性的添加和设置
- */
- Person = {
- sex : 'woman'// 初始属性设置
- };
- Person.applay = function(source, copy, defaults) {
- if (defaults) {
- Person.applay(source, defaults)
- }
- if (source && copy && typeof copy == 'object') {
- for (var p in copy) {
- // alert(p);
- // p是属性名,通过source[p] = copy[p];对source进行属性的添加和设置。
- // 如果copy中的属性列表包含有defaults的属性,则source中采用的是copy中的属性和对应的值。
- source[p] = copy[p];
- }
- }
- return source;
- };
- /**
- * 一、传递的是{}配置列表时
- */
- // 1、不传defaults的情况
- Person.applay(Person, {
- name : 'wujinli',
- age : 26
- });
- // alert(Person.name);// 输出属性名为name的属性值,输出结果:wujinli,也可以用 alert(Person["name"])
- // 2、传defaults并且第二个参数的属性列表中不包含第三个参数的属性的情况
- Person.applay(Person, {
- age : 26
- }, {
- name : 'wujinli'
- });
- // alert(Person.name);// 输出属性名为name的属性值,输出结果:wujinli,也可以用 alert(Person["name"])
- // 3、传defaults并且第二个参数的属性列表中有包含第三个参数的属性的情况
- Person.applay(Person, {
- name : '丫梨',
- age : 26
- }, {
- name : 'wujinli'
- });
- // alert(Person.name);// 输出属性名为name的属性值,输出结果:丫梨,也可以用 alert(Person["name"])
- /**
- * 二、传递的是对象时
- */
- Child = function() {
- this.farther = "farther-name";
- this.mother = "mother-name";
- };
- Person.applay(Person, new Child());
- // alert(Person.farther);// 输出属性名为farther的属性值,输出结果:farther-name