让前端飞

JavaScript对象赋值过程详解

2018-09-08  本文已影响2人  打铁大师

提醒一下

阅读本文,你需要了解JavaScript的原型链相关知识。

进入正题

先看这么一句代码:

obj.a = 'abc';

这段代码的意思是,给obj对象设置属性。就是修改obj对象的a属性或添加一个属性a。

尽管代码很简单,但是不一定能赋值成功。

下面我们完整的讲解下赋值的过程:

obj.a = 'abc';

请看例子:

var obj = {
  a: 'aaa'
};

//将b属性定义为只读的
Object.defineProperty(obj, 'b', {
  writable: false,
  enumerable:true,
  configurable:true,
  value: 'bbb',
});

console.log(obj); //{ a: 'aaa', b: 'bbb' }

obj.a = 'abc';
obj.b = 'abc';

console.log(obj); //非严格模式下 { a: 'abc', b: 'bbb' }

上面的例子中,b为只读属性,因此赋值操作失败。

最后再来看个隐式赋值操作:

var pro = {
  a:1,
}

var obj = Object.create(pro);

obj.a++;

console.log(obj.a); //2
console.log(obj.hasOwnProperty('a')); // true

上面这个例子中,一开始,obj对象自身是不包含a属性的。但是,经过一个++操作后,obj对象有了自有属性a。原因是:obj.a++ 操作相等于 obj.a = obj.a+1; 这里有个显示的赋值。

上一篇下一篇

猜你喜欢

热点阅读