我想测试 JavaScript .bind() 方法,但我做错了一些事情 - 值(通过引用传递)没有增加,仍然是 5...
这是我的代码:
function MyObject() {
this.value = 5;
}
MyObject.prototype.add = function fn0() {
return this.value++;
}
var ancestor = new MyObject();
function functionChanger(fnc, obj) {
fnc.bind(obj);
}
functionChanger(ancestor.add, ancestor);
我想要实现的正确版本
function functionChanger(fnc) {
fnc();
}
functionChanger(ancestor.add.bind(ancestor));
最佳答案
function functionChanger(fnc, obj) {
fnc.call(obj);
}
/* or */
function functionChanger(fnc, obj) {
fnc.apply(obj);
}
请注意bind
创建一个函数,因此您也可以使用(不推荐):
function functionChanger(fnc, obj) {
fnc.bind(obj)();
}
关于JavaScript .bind()方法简单测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20869955/