js对象概念

331 阅读2分钟

对象应该是下列事物之一:

  1. 一个可以触摸或者可以看见的东西;
  2. 人的智力可以理解的东西;
  3. 可以指导思考或行动(进行想象或施加动作)的东西。
JavaScript 对象的特征
  • 对象具有唯一标识性:即使完全相同的两个对象,也并非同一个对象。
  • 对象有状态:对象具有状态,同一对象可能处于不同状态之下。
  • 对象具有行为:即对象的状态,可能因为它的行为产生变迁。
 对象具有唯一标识的内存地址,所以具有唯一的标识。
 var o1 = { a: 1 };
 var o2 = { a: 1 };
 console.log(o1 == o2); // false
 即使这两个对象内容一样 但并不是一个对象。
 
在 JavaScript 中,将状态和行为统一抽象为“属性”。

JavaScript 中对象独有的特色是:对象具有高 度的动态性,这是因为 JavaScript 赋予了使用者在运行时为对象添改状态和行为的能力

    var o = { a: 1 };
    o.b = 2;
    console.log(o.a, o.b); //1 2

js对象的两类属性

数据属性
  • value:就是属性的值。
  • writable:决定属性能否被赋值。
  • enumerable:决定 for in 能否枚举该属性。
  • configurable:决定该属性能否被删除或者改变特征值

访问器(getter/setter)属性

  • getter:函数或 undefined,在取属性值时被调用。
  • setter:函数或 undefined,在设置属性值时被调用。
  • enumerable:决定 for in 能否枚举该属性。
  • configurable:决定该属性能否被删除或者改变特征值
    let obj ={a:'1'};
    Object.getOwnPropertyDescriptor(obj,"a") 内置函数
    输出内容 :{value: "1", writable: true, enumerable: true, configurable: true}
 
    想改变属性的特征,或者定义访问器属性,我们可以使用 Object.defineProperty
    var obj = { a: 1 };
    Object.defineProperty(obj,"a", {value: 2, writable: false, enumerable: false, configurable: true})
    Object.getOwnPropertyDescriptor(obj,"a"); 
    输出结果:{value: 2, writable: false, enumerable: false, configurable: true}