Если я правильно понимаю, каждый объект в Javascript наследуется от прототипа Object, что означает, что каждый объект в Javascript имеет доступ к функции hasOwnProperty через цепочку прототипов.
При чтении исходного кода require.js я наткнулся на эту функцию:
function hasProp(obj, prop) {
return hasOwn.call(obj, prop);
}
hasOwn
является ссылкой на Object.prototype.hasOwnProperty
. Существует ли какая-либо практическая разница в написании этой функции как
function hasProp(obj, prop) {
return obj.hasOwnProperty(prop);
}
И так как мы на нем, почему мы вообще определяем эту функцию? Является ли это просто вопросом ярлыков и локального кэширования доступа к свойствам для (незначительного) прироста производительности, или я пропускаю любые случаи, когда hasOwnProperty может использоваться для объектов, которые не имеют этого метода?