首页 > 解决方案 > Object 中的 apply、bind 和 call 方法如何使用

问题描述

我试图理解 javascript 中的原型继承,然后我偶然发现了 apply 方法,它是自己的属性,Function.prototype但是当我尝试检查属性时 apply onObject它实际上也存在。现在我很困惑,因为我知道大多数父对象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] }

标签: javascriptfunctionobject

解决方案


这取决于Object你在说什么。

函数 ObjectFunction.prototype其原型链中,Object.apply存在。

然而,它在实际物体上并不存在。因此,apply只能用 withObject作为静态方法(因为apply不附加到Object.prototype):

const objectFunctionHasApply = Object.apply || false;
const literalObjectHasApply = ({}).apply || false;
console.log(objectFunctionHasApply);
console.log(literalObjectHasApply);


推荐阅读