在javascript中为什么重置后函数的原型也需要重置函数原型构造函数?

时间:2013-07-29 09:44:09

标签: javascript constructor prototype

我总是看到这样编写的代码:

function F() {};
var obj = {...}
F.prototype = obj;

F.prototype.constructor = F // why need this

重置原型后:F.prototype = obj,为什么需要最后一行?这也重置了构造函数,是否总是需要它?

1 个答案:

答案 0 :(得分:3)

所有 Javascript对象从其构造函数的原型对象继承属性。

然后,他们如何从Object类继承属性?

请记住,原型对象本身就是一个对象,它是使用Object()构造函数创建的。这意味着原型对象本身从Object.prototype 继承属性。

如果我们使用在定义 F( ) 构造函数时创建的默认原型对象,我们将获得Object的子类。在此处获取obj的子类,我们必须明确地创建我们的原型对象。

function F() {}; 
  var obj = {...}
  F.prototype = obj();

由于原型对象是使用 obj() 构造函数创建的,因此它有一个构造函数属性,该属性引用obj object的构造函数。但是我们想要 { {1}}对象有一个不同的构造函数F。这就是我们必须重新分配这个默认构造函数属性的原因。

F()

我希望这对你有帮助。