при условии, что объект может содержать собственное свойство, называемое «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-вместо-myobj-hasow – tymeJV