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