这听起来比它应该的更容易,但我在尝试解决这个问题时遇到了问题。我的情况基本上是,我可以创建一个将使用原型(prototype)的类(例如:function exClass() {}
)。
如果我想添加到类中,我可以使用:exClass.prototype.newMethod() = '';
。
那么为什么如果我在原型(prototype)“newMethod”中,我就不能再向“exClass”添加新原型(prototype)了。我的意思的一个例子是:this.prototype.test_var1 = ''
- 它失败了,exClass.test_var1
也是如此。
为什么我无法从其子类之一向该类添加更多内容?
最佳答案
对象的原型(prototype)不是对象上名为prototype
的属性。函数上的原型(prototype)字段是将成为使用该函数创建的对象原型(prototype)的对象。对象可以通过 constructor
函数访问创建它的函数的原型(prototype)。例如,this.constructor.prototype.test_var1 = ''
在大多数情况下都有效。
我说在大多数情况下,因为许多 JavaScript 引擎都有一个内置的 __proto__
,它是对象的原型(prototype),可以动态修改,但例如 IE 不支持。
在 ES5 中,您可以使用 Object.getPrototypeOf() 可靠地获取原型(prototype)。因此,例如,您可以在 ES5 中说 Object.getPrototypeOf(this).test_var1 = ''
这将在现代浏览器中工作,但在不支持 ES5 的浏览器中不工作。
关于JavaScript - 尝试从原型(prototype)中添加原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5689412/