javascript – 原型/对象语句和链遍历所需的澄清

前端之家收集整理的这篇文章主要介绍了javascript – 原型/对象语句和链遍历所需的澄清前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > 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称为静态方法.更恰当的是,它不是原型链的一部分.

猜你在找的JavaScript相关文章