枚举enumerable


枚举也就是列举,js中对象属性可以设置是否枚举。不可枚举也就无法列举,无法for…in遍历。

//对象属性可设置枚举与不可枚举 不可枚举指的是属性无法列出来也就是 

//无法通过for in 访问 且这个属性为灰色

function Person() {
    this.name = "小明"
}

//直接定义属性值 Person.prototype.job = "学生";

//通过 Object.defineProperty 定义属性值与枚举
Object.defineProperty(Person.prototype, "job", {
    value: "学生",
    enumerable: true,
    //enumerable默认为false
})

var student = new Person();
Object.defineProperty(student, "sex", {
    value: "male",
    writable: false
    //enumerable默认为false
});

for (let key in student) {
    console.log("遍历的student." + key + " = " + student[key]);
    //遍历访问不到student.sex
}

console.log("直接输出的student.sex" + " = " + student.sex);
// 能直接访问student.sex

Object.getOwnPropertyDescriptor(student, 'sex');//查看属性描述
Object.getOwnPropertyDescriptors(student);//查看属性描述--总

文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录