javascript对象属性特征

javascript对象有三个特征:

  1. 可写:writable
  2. 可配置:configurable
  3. 可枚举:enumerable

下面通过例子来解析他们的作用

  • 首先写一个对象:

var person = {
  name:"hester",
  age:17
}
  • 列举对象属性的特征getOwnPropertyDescriptor

var info = Object.getOwnPropertyDescriptor(person,"name");
console.log(info);
//{"value":"hester","writable":true,"enumerable":true,"configurable":true}
  • writable特征:

console.log(person.name); // hester
Object.defineProperty(person,"name",{writable:false});
person.name = "jack";
console.log(person.name); // hester

属性设置writable为false后,不可修改该属性的值

  • configurable特征:

Object.defineProperty(person,"name",{configurable:false});

属性设置configurable为false后:
1.不可设置configurable为true;
2.不可设置enumerable(true为false 和 false为true均不可以);
3.不可设置writable由false为true,可设置writable由true为false

  • enumerable特征:

for(var p in person){
  console.log(p);
} // name,age 
Object.defineProperty(person,"name",{enumerable:false});
for(var p in person){
  console.log(p);
} // age
console.log(person.name); // hester

属性设置enumerable为false后,不可被枚举出来,比如for...in循环等。但是可以访问

检查属性的enumerable特征状态

person.propertyIsEnumerable("name"); // false
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 JavaScript提供了一个内部数据结构,用来描述一个对象的属性的行为,控制它的行为。这被称为“属性描述对...
    zjh111阅读 735评论 0 0
  • 概述 JavaScript提供了一个内部数据结构,用来描述一个对象的属性的行为,控制它的行为。这被称为“属性描述对...
    许先生__阅读 503评论 0 1
  • 在JavaScript中,你可以如下所示创建一个对象字面量: 乍一看,好像对象cat有字符串和数字值这两个属性。然...
    java部落阅读 391评论 0 0
  • 来自:参 考 原 文 对象是由多个名/值对组成的无序的集...
    wyude阅读 1,271评论 1 7
  • 我们相识于童话般的年纪,从小学到中学一直都是同班同学,记得那个时候去她家吃饭,她爸爸拉着我们的手说:你们要做一辈子...
    夜初阑阅读 201评论 0 0