我试图理解javascript中的原型继承,然后偶然发现了apply方法,该方法是Function.prototype
的自有属性,但是当我尝试检查属性在Object
上的存在时,它实际上也存在。现在,我感到困惑,因为我知道父级大多数对象是Object
而不是Function
。有人可以帮我理解吗?
要尝试我要说的话,只需在chrome控制台中运行它们即可。
Function.prototype.hasOwnProperty('apply') // o/p --> true
Object.hasOwnProperty('apply'); // o/p --> false
Object.prototype.hasOwnProperty('apply'); // o/p --> false
Object.apply // o/p --> ƒ apply() { [native code] }
答案 0 :(得分:1)
这取决于您在谈论哪个Object
。
函数 Object
在其原型链中具有Function.prototype
,Object.apply
存在。
但是,它在实际对象上不存在。因此,apply
仅可与Object
一起用作静态方法(因为apply
未附加到Object.prototype
上):
const objectFunctionHasApply = Object.apply || false;
const literalObjectHasApply = ({}).apply || false;
console.log(objectFunctionHasApply);
console.log(literalObjectHasApply);