我总是看到这样写的代码:
function F() {};
var obj = {...}
F.prototype = obj;
F.prototype.constructor = F // why need this
重置原型后:F.prototype = obj
为什么需要最后一行?这也重置了构造函数并且总是需要它吗?
我总是看到这样写的代码:
function F() {};
var obj = {...}
F.prototype = obj;
F.prototype.constructor = F // why need this
重置原型后:F.prototype = obj
为什么需要最后一行?这也重置了构造函数并且总是需要它吗?
所有Javascript 对象都从其构造函数的原型对象继承属性。
那么,它们又是如何从 Object 类继承属性的呢?
请记住,原型对象本身就是一个对象,它是使用Object()
构造函数创建的。这意味着原型对象本身继承了Object.prototype
.
如果我们使用定义F( )
构造函数时创建的默认原型对象,我们会得到一个Object的子类。要在这里得到一个子类obj
,我们必须显式地创建我们的原型对象。
function F() {};
var obj = {...}
F.prototype = obj();
由于原型对象是用obj()
构造函数创建的,它有一个构造函数属性,它引用对象的构造函数。但是obj
我们希望F
对象有一个不同的构造函数,那就是F()
。这就是为什么我们必须重新分配这个默认的构造函数属性。
F.prototype.constructor = F;
我希望这对你有所帮助。