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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在javascript中为什么重置后函数的原型也需要重置函数原型构造函数?相关的知识,希望对你有一定的参考价值。

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

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()

我希望这对你有帮助。

以上是关于在javascript中为什么重置后函数的原型也需要重置函数原型构造函数?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中原型对象的彻底理解

一文带你彻底理解 JavaScript 原型对象

JavaScript创建对象——原型模式

问答式理解javascript的原型及其原型链

JavaScript ---- 原型,原型链(什么是原型)

js构造函数