详解javascript 原型链继承,要很详细很详细解答!高悬赏,js大神们快来看看!

2025-03-10 11:09:36
推荐回答(2个)
回答1:

学习了,还没用到过一个类要继承自一个类的这种情况,目前写的代码全部是简单的设置prototype属性。

研究了一下你的这段代码(好像在哪见过类似的),核心部分还是简单的设置了一下prototype属性:

extend(absObj, sprPropty);//clazz.prototype=superclass.prototype
extend(absObj, constructor(sprPropty));//clazz.prototype添加新属性

了解了prototype机制,基本上也就理解了这段代码

参考:www.w3school.com.cn/js/pro_js_inheritance_implementing.asp


还有一个小问题,子类的initialize方法中估计都会调用superclass.initialize.call(this, options);,不然子类就不会有父类initialize中定义的属性了,这样完全可以写到clazz函数中:

var clazz = function() {
    //调用父类的构造方法,有点像java的构造方法中,super构造方法必须放到最前面
   superclass&&superclass.prototype.superclass&&superclass.prototype.initialize.apply(this, arguments);
   //调用子类的构造方法
   this.initialize.apply(this, arguments);
};


/**还有一个**/

 //如果无参数,直接返回类::::狗血,没参数clazz还能运行起来么,返回clazz有啥用
if (arguments.length == 0) return clazz;
//直接抛异常吧
if (arguments.length == 0) throw new Error("狗血");

回答2:

你要问什么?