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