js 自定义extend函数

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 19:43   11   0

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);


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP