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