提供的对象可能包含自己的财产被称为“hasOwnProperty”:什么是适当的/推荐的方式来使用hasOwnProperty?
> a={abc: 123};
{ abc: 123 }
> a.hasOwnProperty("abc");
true
> a['hasOwnProperty'] = 1;
1
> a.hasOwnProperty("abc");
TypeError: a.hasOwnProperty is not a function
...
这工作,有点丑陋的界面,如果你仔细想想Object.keys(),Object.assign()等。所以,是有更好的方法吗?
> Object.hasOwnProperty.call(a, "abc");
true
> Object.hasOwnProperty.call(a, "hasOwnProperty");
true
为什么不应该解决方案是唯一的推荐方式?直接从对象中使用方法看起来像是一个失败的秘诀,尤其是如果它包含外部数据(不是在一个人的控制下)。
可能会有所帮助:http://stackoverflow.com/questions/12017693/why-use-object-prototype-hasownproperty -callmyobj-prop-instead-of-myobj-hasow – tymeJV