JS遍历属性

2018-08-27 14:55:37 浏览数 (1)

可枚举属性

对象属性可枚举,表示该属性的值不可修改,可认为该属性是常量。 如何定义不可枚举的属性?

代码语言:javascript复制
var obj = {name: 'jack', age:23}
Object.defineProperty(obj, 'id', {value : '123', enumerable : false });

获取对象所有可枚举属性

使用Object.keys(obj)可以获取对象obj自身所包含的所有可枚举属性。 例如:

代码语言:javascript复制
  var arr = ["a", "b", "c"];
    console.log(Object.keys(arr)); // console: ["0", "1", "2"]


    var obj = { 0 : "a", 1 : "b", 2 : "c"};
    console.log(Object.keys(obj)); // console: ["0", "1", "2"]


    var an_obj = { 100: "a", 2: "b", 7: "c"};
    console.log(Object.keys(an_obj)); // console: ["2", "7", "100"]


    var my_obj = Object.create({}, { getFoo : { value : function () { return this.foo } } });
    my_obj.foo = 1;

    console.log(Object.keys(my_obj)); // console: ["foo"]

获取对象所有的实例属性

代码语言:javascript复制
Object.getOwnPropertyNames(obj) ;//获得对象上所有的“实例属性”

判断对象是否拥有实例属性

代码语言:javascript复制
obj.hasOwnProperty(‘id’); 
//只要该对象obj拥有属性id, 无论id是否可枚举,都返回true
for(var i  in obj){ } 
// 表示访问对象所有可枚举的属性,包括可枚举的实例属性和可枚举的原型对象的属性
“name”  in obj   
// 通过对象能够访问给定属性名时返回true, 无论该属性存在于实例中还是原型对象中

0 人点赞