参见英文答案 > Why is it Object.defineProperty() rather than this.defineProperty() (for objects)? 3个
虽然仍在努力阅读“你不懂JS”,但我开始有了好主意(喜欢这个系列).我想我已经掌握了原型,但我遇到了下面的代码.
var myObject = {
a:2
};
Object.getOwnPropertyDescriptor(myObject,"a");
虽然我完全理解输出及其含义,但我试图使用我对原型的理解(或缺乏),并希望在下面做.
myObject.getOwnPropertyDescriptor
我认为它会遍历原型链到Object的原型并获得该方法但事实证明,Object的原型没有这个(假设这不是对象原型的一部分,因为我正在查找文档,至少我不要把它看作原型的一部分,它说它是一种方法).因此,我假设这只是Object.getOwnPropertyDescriptor,而不是Object.prototype.getOwnPropertyDescriptor.
我是否正确理解了这一点,为什么Object的方法不适用于所有原型?
最佳答案
this is not part of the prototype of Object… it’s a method
你是完全正确的.这可以在js控制台中立即验证:
> Object.getOwnPropertyDescriptor
getOwnPropertyDescriptor() { [native code] }
> Object.prototype.getOwnPropertyDescriptor
undefined
在更严格的OOP语言中,您可以将getOwnPropertyDescriptor称为静态方法.更恰当的是,它不是原型链的一部分.