opt*_*tor 12 javascript bind function
有没有办法通过Function.prototype.bind重新绑定已绑定到另一个对象的函数?
var a={};
var b={};
var c=function(){ alert(this===a); };
c(); // alerts false
c=c.bind(a);
c(); // alerts true
c=c.bind(b);
c(); // still alerts true
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用不同的方法并保持"干净"的绑定功能,但我只是想知道如何重用已经绑定的函数.
有没有办法通过Function.prototype.bind重新绑定已绑定到另一个对象的函数?
号从ES2015规范有关Function.prototype.bind:
19.2.3.2 Function.prototype.bind(thisArg,... args)
[...]
注意2:如果Target是箭头函数或绑定函数,则后续调用F将不会使用传递给此方法的thisArg.
对于早期版本也是如此.
是什么.bind()做的是几乎相同的:
function likeBind(fun, thisValue) {
return function() {
var args = [].slice.call(arguments, 0);
return fun.apply(thisValue, args);
};
}
Run Code Online (Sandbox Code Playgroud)
所以:
c = likeBind(c, a);
Run Code Online (Sandbox Code Playgroud)
给你一个绑定功能.现在,即使您尝试重新绑定,原始绑定函数仍然存在于该闭包中,并且具有您最初请求使用的值this.闭包内变量的值只能从闭包内部改变,因此没有什么办法可以解除绑定绑定函数.你必须从原来的功能重新开始.
所以,没有.
| 归档时间: |
|
| 查看次数: |
2316 次 |
| 最近记录: |