javascript - 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] }
解决方案
这取决于Object
你在说什么。
该函数 Object
在Function.prototype
其原型链中,Object.apply
存在。
然而,它在实际物体上并不存在。因此,apply
只能用 withObject
作为静态方法(因为apply
不附加到Object.prototype
):
const objectFunctionHasApply = Object.apply || false;
const literalObjectHasApply = ({}).apply || false;
console.log(objectFunctionHasApply);
console.log(literalObjectHasApply);
推荐阅读
- python - Python 中的增强型 Dickey-Fuller 测试存在少量观察的问题
- html - Wordpress 网格发布 CSS 样式
- wpf - WPF表单调试卡住
- javascript - D3 js图中相同颜色的箭头和链接
- entity-framework-core - 实体框架核心 - 拥有的实体不使用 Linq 聚合
- html - 左容器响应式和右容器固定宽度 css, html
- inno-setup - Install customized version of configuration file in Inno Setup after (Firebird) subinstaller finishes
- unity3d - 尝试创建基本场景元素检查器
- firebase - firebase.auth 响应的哪些部分应该存储在本地(在 reactjs 应用程序中)?他们在做什么?
- java - 如何在不使用继承/getters/reflection 的情况下比较不同类的私有成员变量?