这两个显然做类似的事情,但我的问题是为什么原型上的一个和对象上的一个?
例如,这两者的调用方式不同。这种情况有合理的原因吗?
var o = {name: "value"}
o.hasOwnProperty("name") //true
Object.getOwnPropertyNames(o); //name
//Couldn't the above have been coded so we can run o.getOwnPropertNames();
谢谢。
这两个显然做类似的事情,但我的问题是为什么原型上的一个和对象上的一个?
例如,这两者的调用方式不同。这种情况有合理的原因吗?
var o = {name: "value"}
o.hasOwnProperty("name") //true
Object.getOwnPropertyNames(o); //name
//Couldn't the above have been coded so we can run o.getOwnPropertNames();
谢谢。
将这些方法添加到原型的问题在于它们容易过载。
var o = {};
o.getOwnPropertyNames = 17;
//What now?
事实上,你会经常看到人们在做
Object.prototype.hasOwnProperty.call(o, propname);
为了避免hasOwnProperty 的重载问题。