怎么理解关于constructor的一句话

当定义一个prototype的时候,会构造一个原形对象,这个原型对象存储于构造这个prototype的函数的原形方法之中.

function Foo(y){
this.y = y ;
}

Foo.prototype.x = 10;

Foo.prototype.calculate = function(z){
return this.x+this.y+z;
};

var b = new Foo(20);

alert(b.calculate(30));

以上为代码示例

阅读 2.1k
3 个回答

就是

Foo.prototype.constructor = Foo;

以下内容可以在《javascript高级教程第三版》关于原型对象的介绍

只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个 prototype 属性,这个属性指向函数的原型对象。

在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype 属性所在函数的指针。

Foo.prototype.constructor 指向 Foo()。而通过这个构造函数Foo(),可继续为原型对象添加其他属性和方法(this.y=y)。

创建了自定义的构造函数之后,其原型对象默认只会取得constructor 属性;至于其他方法,都是从Object 继承而来的。(或者自定义上的[也可以理解为加上去])

当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象.

然后是时候祭上下图:

(下图中,Person可理解为你的Foo)

clipboard.png

函数原型对象的构造函数是它自己。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题