提供的對象可能包含自己的財產被稱爲「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