我正在玩javascript原型.我是新手,所以我有一个小问题.
我正在使用这个article作为指南.
我已经定义了一个产品并定义了一本书. Book.prototype.constructor = Book()的目的是什么?这个.我弄不清楚.我能够成功调用父构造函数和不使用它.
Book.prototype = new Product;
Book.prototype.constructor = Book; // What's the purpose of this
这是我的jsFiddle link
最佳答案
首先,new Product()创建一个包含Product函数的所有原型变量的对象.因此,通过设置Book.prototype = new Product(),Book继承了Product的所有原型变量.
原文链接:https://www.f2er.com/js/429779.html您可能认为您也可以说:Book.prototype = Product.prototype,但该解决方案无法按预期工作. Book的原型成为Product的原型指针,因此它不是副本.如果你想改变Book的原型,它实际上是在Product的原型中改变的,那不是你想要的.
不久,新的Product()创建了所有原型变量的副本.
但这种方法也存在问题.如果要立即创建新Book,则调用Product构造函数,而不是Book构造函数.要解决这个问题,你需要再次正确设置构造函数,它将工作:
Book.prototype.constructor = Book;
// Note: it's not Book(),but Book,it's a reference to the function