1.实现
/**
* 有一个函数为extend,该函数有两个参数
* arg1
* arg2
* 当第一次调用该函数的时候,创建一个类,
* 当第二次调用该函数的时候,为这个类提供扩展
*/
function extend(json,prop){
function F(){
}
/**
* 如果json为函数
*/
if(typeof json == "function"){
/**
* 如果json为一个函数,把json的原型赋值给了F的原型,相当于F继承了json
*/
F.prototype = json.prototype;
/**
* prop为扩展,把prop的每一个key,value键值对赋值给了F的prototype
*/
for(var i in prop){
F.prototype[i] = prop[i];
}
}
/**
* 如果json为json对象
* 当第一次调用extend方法的时候,执行该if语句
*/
if(typeof json == "object"){
/**
* 遍历json对象,把json对象的每一个key值添加了F的prototype属性的属性上
* 把json对象的每一个value值赋值给prototype的属性的值
*/
for(var i in json){
F.prototype[i] = json[i];
}
}
return new F();
}
2.调用
/**
* 该Person为一个对象
*/
var Person = extend({
a:'a',
b:'b'
});
var p = new Person();//不能使用new关键字进行创建了
alert(p.a);
var Student = extend(Person,{
c:'c',
d:'d'
});
var s = new Student();
alert(s.c);
|