js对象属性检索在后台如何工作?

时间:2019-07-16 15:33:00

标签: javascript javascript-objects jsobject

我有一个对象

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

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

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

这是如何在后台工作的?

1 个答案:

答案 0 :(得分:1)

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

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

由于lastName中存在person,因此找到了属性并返回了Ferrera

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