JavaScript对象属性赋值操作的逻辑

对象进行属性赋值操作时,其执行逻辑如下所示:

1. 当前对象中是否有该属性?有,进行赋值操作;没有,进行下一步判断。

2. 对象的原型链中是否有该属性?没有,在当前对象上创建该属性,并赋值;有,进行下一步判断。

3. 原型链中该属性是否允许操作?是,在当前对象上创建同名属性,并赋值;否,属性赋值失败。

无论是属性赋值还是新建属性,都是在当前对象上进行的,不会修改原型链!第三种情况下,新建的属性将会覆盖对象从原型链继承来的同名属性。