有时我会看到这样的东西,但我很不明白:
// ...
that.constructor = ...
//...
虽然构造函数属性不应该是要赋值的东西,但返回对象是其实例的属性。我认为 .constructor
是一个类似于 .length
的属性,用于返回数据的字符串并且不可更改。这是真的吗?
最佳答案
当一个 ECMAScript 函数对象被创建时,它被赋予一个 public prototype 属性,它是一个普通对象,以防函数被用作构造函数。原型(prototype)对象被赋予一个公共(public)constructor 属性,该属性是对该函数的引用。从构造函数创建的实例将继承原型(prototype)的构造函数属性(除非它被实例上的构造函数属性或其原型(prototype)链上的更高层隐藏)。
constructor 属性可能会被重新赋值,通常是因为原来的原型(prototype)对象被其他对象替换了。 constructor 属性可以设置为任何值,因此它并不是特别有用。
关于宿主对象的原型(prototype)属性(如果它们有的话),请注意它们可以为所欲为(包括在您尝试设置甚至访问它们时抛出错误)。
关于javascript - 将构造函数分配给某物是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7314033/