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`.

在上面的示例中,该对象b似乎具有名为(Bar)的正确构造函数-并且它继承了的age属性Foo。那么为什么很多人建议将此作为必要步骤:

Bar.prototype.constructor = Bar;

显然,在Bar构造

调用了正确的构造函数b,那么这个原型属性有什么影响?我很想知道“正确设置”构造函数的属性会对实际产生什么影响,因为我看不到它对创建对象后实际调用哪个构造函数有任何影响。

回答:

constructor属性对内部任何事物都完全没有实际的区别。仅当您的代码明确使用它时,它才有用。例如,您可能决定需要每个对象都具有对创建它的实际构造函数的引用。如果是这样,那么constructor在设置继承时,您需要通过将一个对象分配给构造函数的prototype属性来显式设置属性,如您的示例。

以上是 Javascript构造函数属性的意义是什么? 的全部内容, 来源链接: utcz.com/qa/409668.html

回到顶部