Возможно переопределить методы в функции, заставив apply
сделать что-то, кроме его назначения по умолчанию:
function foo() {
console.log("This doesn't happen");
}
foo.apply = function() {
console.log("This happens instead.");
};
foo.apply({});
Кроме того, в прежние времена предоставляемые хостом функции не всегда имели эти методы (но это больше не соответствует действительности).
Это похожепо той причине, что люди рекомендуют использовать Object.prototype.hasOwnProperty.call(x, y)
вместо x.hasOwnProperty(y)
.(Но в этом случае он также защищает от возможности того, что x
не наследуется от Object.prototype
, что возможно сейчас. Например, если x
является результатом Object.create(null)
или наследуется от любого созданного объектатаким образом.)