javascript构造函数重置:它是什么?

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

我看到了这张幻灯片:

第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.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;