我想为不支持绑定功能的浏览器创建JavaScript的绑定功能的Polyfill。任何人,请告诉我们如何在javascript中实现绑定功能。
答案 0 :(得分:2)
以最简单的形式,bind
只是apply
的包装:
function bind(fn, thisObj) {
return function() {
return fn.apply(thisObj, arguments);
}
}
答案 1 :(得分:0)
通过使用apply实现了绑定的基本功能。 我将此方法称为 myBind ,并将其添加到函数原型中,以便任何函数都可以访问它:
功能实现
Function.prototype.myBind = function() {
const callerFunction = this;
const [thisContext, ...args] = arguments;
return function() {
return callerFunction.apply(thisContext, args);
}
}
用法: 可用作结合上下文和参数的本机绑定函数。
function testMyBind(favColor) {
console.log(this.name, favColor); // Test, pink
}
const user = {
name: 'Test'
}
const bindedFunction = testMyBind.myBind(user, 'pink');
bindedFunction();
答案 2 :(得分:0)
为了简化操作,同时使用现代JavaScript:
Function.prototype.bind = function () {
return () => this.call(...arguments);
};
仅此而已。