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