var arr = ["a", "b", "c"];
alert(Object.keys(arr)); // 弹出"0,1,2"
// 类数组对象
var obj = { 0 : "a", 1 : "b", 2 : "c"};
alert(Object.keys(obj)); // 弹出"0,1,2"
// getFoo是个不可枚举的属性
var my_obj = Object.create({}, { getFoo : { value : function () { return this.foo } } });
my_obj.foo = 1;
alert(Object.keys(my_obj)); // 只弹出foo
为什么只弹出foo,getFoo也是key值吧?
使用Object.defineProperty定义对象属性,writable,enumberable(决定是否可枚举),configurable默认均为false。而字面量定义对象属性,这些属性描述默认均为true。
https://developer.mozilla.org...
去百度Object.defineProperty
,为什么没有,因为在指定属性特性的时候,enumerable
被指定成false
了,也就是不能枚举属性,只要这么写代码就可以得到了:
var my_obj = Object.create({}, {
getFoo: {
value: function () {
return this.foo
},
enumerable: true
}
});