- 主题:[求助]问一段js代码
function extend(subClass,superClass){
var F = function(){};
F.prototype = superClass.prototype;
subClass.prototype = new F();
subClass.prototype.constructor = subClass;
// 下面这段代码,可不可以直接赋值为 superClass ?二者有什么区别?
subClass.superClass = superClass.prototype;
//
if(superClass.prototype.constructor == Object.prototype.constructor){
superClass.prototype.constructor = superClass;
}
}
注释部分的代码是在子类增加一个指向父类的属性,但是并不是直接指向父类,而是指向父类的原型,这两者有什么区别。
谢谢。
--
FROM 218.106.156.*
谢谢。
【 在 javaboy 的大作中提到: 】
: 这行代码不是必要的。没有也不影响属性链的查询。
: 可能作者自己要用,建议搜一下库的其他地方有没有用到这个的代码看看。
:
--
FROM 218.106.156.*
谢谢,我好好理解一下。
【 在 dhcn 的大作中提到: 】
: 周爱民的<JAVASCRIPT语言精髓与编程实践>里面这种代码比较多,主要是为了精确模拟传统OO编程范式标准特性。
: 像现在的TS编译结果里面应该也有类似代码。
: 注释部分的代码是在子类增加一个指向父类的属性,但是并不是直接指向父类,而是指向父类的原型,这两者有什么区别:原型链是自动向上遍历的,所以利用原型链做父类属性获取是JS里面比较方便的方式。还有一种继承方式,是属性复制,但那个在动态语言里面会出bug。
--
FROM 120.32.110.*