Javascript 构造函数属性的意义是什么?
试图绕着Javascript对OO的看法弯曲...而且,像许多其他人一样,对财产感到困惑。特别是,该属性的重要性,因为我似乎无法使其产生任何影响。例如:constructor
constructor
function Foo(age) {
this.age = age;
}
function Bar() {
Foo.call(this, 42);
this.name = "baz";
}
Bar.prototype = Object.create(Foo.prototype);
var b = new Bar;
alert(b.constructor); // "Foo". That's OK because we inherit `Foo`'s prototype.
alert(b.name); // "baz". Shows that Bar() was called as constructor.
alert(b.age); // "42", inherited from `Foo`.
在上面的示例中,对象似乎具有名为 () 的正确构造函数 – 并且它从 继承了 age 属性。那么,为什么很多人建议这是必要的步骤:b
Bar
Foo
Bar.prototype.constructor = Bar;
显然,在构造时调用了正确的构造函数,那么这个原型属性有什么影响呢?我很好奇,“正确”设置构造函数属性实际上有什么实际区别 - 因为我看不到它对创建对象后实际调用哪个构造函数有任何影响。Bar
b