Javascript重新绑定一个绑定函数
Javascript Rebinding An Bound Founction
假设我有一个片段
function hi() {
console.log('Hello ' + this._hi);
}
var marcie = hi.bind({_hi: 'Sir'});
var patty = marcie.bind({_hi: 'Lucille'});
marcie(); // output: Hello Sir
patty(); // expected: Hello Lucille // actual: Hello Sir
我想重新绑定绑定函数marcie,但看起来重新绑定它不起作用。
我知道call, apply和bind在改变函数上下文。但是,当它已经被绑定时,它似乎不起作用。
如何在javascript中重新绑定绑定函数?还是不允许?
当您使用bind
时,您将获得一个新函数,该函数是某种代理:当您调用该代理时,它忽略传递的this
并调用绑定this
的原始函数。
-
hi
对this
做某事 -
marcie
忽略this
,调用hi
,{_hi: 'Sir'}
作为this
-
patty
忽略this
,调用marcie
,{_hi: 'Lucille'}
作为this
但是,由于marcie
忽略了this
,所以patty
是无用的。
相反,您应该在原始函数上始终使用bind
:
function hi() {
return 'Hello ' + this._hi;
}
var marcie = hi.bind({_hi: 'Sir'}),
patty = hi.bind({_hi: 'Lucille'});
[marcie(), patty()]; // ["Hello Sir", "Hello Lucille"]
-
hi
对this
做了一些事情 -
marcie
忽略this
,调用hi
,{_hi: 'Sir'}
作为this
-
patty
忽略this
,调用hi
,{_hi: 'Lucille'}
作为this
相关文章:
- 在我的JavaScript模块中绑定一个点击事件
- AngularJS使用MVC动态获取html,附加到主体,并绑定一个控制器
- Knockout.js用单个json对象绑定一个可观察对象
- jquery没有解除绑定一个“;调整大小”;在插件中完成绑定
- 角度数据绑定一个使用“控制器作为”语法
- 绑定一个 onclick 函数,对象作为在循环中创建的锚标记上的参数
- 使用一个函数在 javascript 中按下多个键时绑定一个函数
- 你能解除绑定一个jQuery函数吗;s已绑定到文档
- 绑定一个kendogrid,带有大型数据源(json数组),任何动态的都需要
- 聚合物网络组件数据绑定一个js对象/数组
- jquery绑定一个键值对
- Javascript重新绑定一个绑定函数
- 在jQuery中绑定一个点击事件到动态创建的对话框
- WebGL:如何绑定一个采样器数组
- 在Javascript中,我如何解除绑定一个窗口事件
- 我如何绑定一个JQuery事件,使它只触发一次
- 在函数中绑定一个变化的变量,我想要一个名字
- 为什么我不能从IE 7-8的css类中绑定一个点击事件?
- 如何绑定一个点击事件到一个传单画布的GridLayer
- 一次在多个jQuery元素上绑定一个函数