我有一个对象
var person = {
firstName: 'David',
lastName: 'Ferrera',
age: 30
};
并且,我想访问2个属性:
person['lastName']
person['lastname']
这是如何在后台工作的?
答案 0 :(得分:1)
引擎查看对象本身,并检查它是否具有属性。如果是,则返回相应的值。如果不是,它将获取对象的原型(也与对象相同)并重复该过程。这样做直到找到该属性或当前检查的对象没有原型。在最后一种情况下,它返回undefined
。
这都是在9.1.8.1 OrdinaryGet ( O, P, Receiver )的规范中定义的。
由于lastName
中存在person
,因此找到了属性并返回了Ferrera
。
由于lastname
中不存在person
,因此引擎将继续查看其原型(Object.getPrototypeOf(person)
)。由于它没有lastname
,也没有原型,因此返回了undefined
。