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