透析Extjs的Ext.js源码(一)对象属性的添加和设置

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

你可能感兴趣的:(ext)