首先遵循此代码:
function User(name, dept){
this.username = name;
this.dept = dept;
this.talk = function(){
return "Hi";
};
}
function Employee(){
User.apply(this, Array.prototype.slice.call(arguments));
}
Employee.prototype = new User();
for(var x in Employee.prototype)
console.log(x, ':', Employee.prototype[x]);
Object.keys(Employee.prototype);//prints array of keys...
打印得很好......
Array.prototype; //[]
Array.prototype.slice; // Function
var o = Array.prototype;
for(var i in o) console.log(i, ':', o[i]); //it doesn't execute
Object.keys(Array.prototype); //[] - ???
如何解释这种行为?
我们可以模仿我们尝试创建的构造函数吗?
答案 0 :(得分:0)
Object.keys() - MDN
Object.keys()
方法返回给定对象自己的可枚举属性的数组...
我们可以检查给定属性是否可枚举:
Array.prototype.propertyIsEnumerable('push');
// false
或者,我们可以获得对象属性的完整描述符,该属性还包括可枚举性标记。
Object.getOwnPropertyDescriptor(Array.prototype, 'push');
// {writeable: true, enumerable: false, configurable: true}
Array.prototype上的属性故意不可枚举,因此它们不会显示在for...in
loops中。