js 对象属性检索在幕后是如何工作的?

问题描述 投票:0回答:1

我有一个对象

var person = {
   firstName: 'David',
   lastName: 'Ferrera',
   age: 30
};

并且,我想访问 2 个属性:

  • person['lastName']
  • person['lastname']

这在幕后是如何运作的?

javascript javascript-objects jsobject
1个回答
2
投票

引擎查看对象本身并检查它是否具有该属性。如果是,则返回相应的值。如果不是,它会获取对象的原型(这也只是一个对象)并重复该过程。它会执行此操作,直到找到该属性或当前检查的对象没有原型。在最后一种情况下,它返回

undefined

这全部在 9.1.8.1 OrdinaryGet (O, P, Receiver) 的规范中定义。

由于

lastName

 存在于 
person
 中,因此找到该属性并返回 
"Ferrera"

由于

lastname

 中不存在 
person
,因此引擎继续查看其原型 (
Object.getPrototypeOf(person)
)。由于它没有 
lastname
 并且也没有原型,因此返回 
undefined

© www.soinside.com 2019 - 2024. All rights reserved.