我总是看到这样编写的代码:
function F() {};
var obj = {...}
F.prototype = obj;
F.prototype.constructor = F // why need this
重置原型后:F.prototype = obj
,为什么需要最后一行?这也重置了构造函数,是否总是需要它?
答案 0 :(得分:3)
所有 Javascript对象从其构造函数的原型对象继承属性。
然后,他们如何从Object类继承属性?
请记住,原型对象本身就是一个对象,它是使用Object()
构造函数创建的。这意味着原型对象本身从Object.prototype
继承属性。
如果我们使用在定义 F( )
构造函数时创建的默认原型对象,我们将获得Object的子类。在此处获取obj
的子类,我们必须明确地创建我们的原型对象。
function F() {};
var obj = {...}
F.prototype = obj();
由于原型对象是使用 obj()
构造函数创建的,因此它有一个构造函数属性,该属性引用obj
object的构造函数。但是我们想要 { {1}}对象有一个不同的构造函数F
。这就是我们必须重新分配这个默认构造函数属性的原因。
F()
我希望这对你有帮助。