2

这两个显然做类似的事情,但我的问题是为什么原型上的一个和对象上的一个?

例如,这两者的调用方式不同。这种情况有合理的原因吗?

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();

谢谢。

4

1 回答 1

0

将这些方法添加到原型的问题在于它们容易过载。

var o = {};
o.getOwnPropertyNames = 17;
//What now?

事实上,你会经常看到人们在做

Object.prototype.hasOwnProperty.call(o, propname);

为了避免hasOwnProperty 的重载问题

于 2014-03-18T20:24:36.963 回答