javascript – 原型链,构造函数,继承

前端之家收集整理的这篇文章主要介绍了javascript – 原型链,构造函数,继承前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在玩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的所有原型变量.

您可能认为您也可以说: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
原文链接:https://www.f2er.com/js/429779.html

猜你在找的JavaScript相关文章