javascript构造函数重置:它是什么?
我看到了这张幻灯片: 第35页: 选项5+超级+构造函数重置javascript构造函数重置:它是什么?,javascript,oop,Javascript,Oop,我看到了这张幻灯片: 第35页: 选项5+超级+构造函数重置 function inherit(C, P) { var F = function(){}; F.prototype = P.prototype; C.prototype = new F(); C.uber = P.prototype; C.prototype.constructor = C; // WHY ??? } 我不明白。有人能解释一下最后一行是干什么的吗 C.prototy
function inherit(C, P) {
var F = function(){};
F.prototype = P.prototype;
C.prototype = new F();
C.uber = P.prototype;
C.prototype.constructor = C; // WHY ???
}
我不明白。有人能解释一下最后一行是干什么的吗
C.prototype.constructor = C; // WHY ???
谢谢这是一个解释 特别是
Cat.prototype = new Mammal(); // Here's where the inheritance occurs
Cat.prototype.constructor=Cat; // Otherwise instances of Cat would have a constructor of Mammal
注意:如果使用以下选项中的#2,我相信不再需要此重置: 我相信您可以使用以下选项进行继承: *一,。do via Object.create(我现在经常看到这种语法): *二,。通过setPrototypeOf
Object.setPrototypeOf(Cat.prototype, Mammal.prototype);
//don't need to reset Cat.prototype.constructor in this case; 'seems smarter'
*三,。通过纽约;不要再想推荐这种方式了(尽管这是我多年前最初学习如何设置继承的方式)。
我相信我已经读过了,不再推荐通过“new ParentClass()”以这种方式设置原型,因为它将复制我相信的proto对象中不需要的属性(您通常会在带有super(constructorParams)或ParentClass.call的实例中设置的属性(这是constructorParams)在Cat的构造函数/函数中,因此它们应该通过原型在所有实例中共享)
谢谢Javascript是一种非常奇怪的语言。:)它是。我个人不会使用名称
constructor
来存储构造函数,因为constructor
在JavaScript中已经有了含义。(只是没用。)
Object.setPrototypeOf(Cat.prototype, Mammal.prototype);
//don't need to reset Cat.prototype.constructor in this case; 'seems smarter'
Cat.prototype = new Mammal();
Cat.prototype.constructor=Cat;