/** * 分析CORE---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