原型/对象语句和链遍历需要澄清

use*_*374 5 javascript

虽然仍在努力阅读"你不懂JS",但我开始有了好主意(喜欢这个系列).我想我已经掌握了原型,但我遇到了下面的代码.

   var myObject = {
     a:2
   };

   Object.getOwnPropertyDescriptor(myObject, "a");
Run Code Online (Sandbox Code Playgroud)

虽然我完全理解输出及其含义,但我试图使用我对原型的理解(或缺乏),并希望在下面做.

   myObject.getOwnPropertyDescriptor
Run Code Online (Sandbox Code Playgroud)

我认为它会向上遍历原型链最多的对象原型和获取方法,但事实证明,对象的原型没有这个(假设这不是对象的原型的一部分,我找了DOC,至少我不要把它看作原型的一部分,它说它是一种方法).因此,我假设这只是Object.getOwnPropertyDescriptor,而不是Object.prototype.getOwnPropertyDescriptor.

我是否正确理解了这一点,为什么Object的方法不适用于所有原型?

Chr*_*ris 2

这不是 Object 原型的一部分...它是一个方法

你说得完全正确。这可以立即在 js 控制台中验证:

> Object.getOwnPropertyDescriptor
getOwnPropertyDescriptor() { [native code] }
> Object.prototype.getOwnPropertyDescriptor
undefined
Run Code Online (Sandbox Code Playgroud)

在更严格的 OOP 语言中,您可以调用getOwnPropertyDescriptor静态方法。更准确地说,它不是原型链的一部分。


归档时间:

查看次数:

62 次

最近记录:

9 年,11 月 前