可枚举属性
对象属性可枚举,表示该属性的值不可修改,可认为该属性是常量。 如何定义不可枚举的属性?
代码语言: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, 无论该属性存在于实例中还是原型对象中