Mus*_*ore 2 javascript jquery this knockout.js
我有这个简单的代码(其中ko == knockout lib):
$(function() {
//var el = document.getElementById('foo');
//console.log(el);
$("#foo").click (function() {console.log(this);});
}); // this == $("#foo")
ko.computed(function () {
console.log('ko computed',this); // this == window object
});
});
Run Code Online (Sandbox Code Playgroud)
为什么"this"在回调中没有绑定到"ko"?我希望它绑定到调用函数,就像在单击处理程序中一样.
如果您查看此方法的knockout.js源代码,我们会找到以下行:
return state.evaluatorFunctionTarget ? readFunction.call(state.evaluatorFunctionTarget) : readFunction();
Run Code Online (Sandbox Code Playgroud)
如果没有提供evaluateatorFunctionTarget(第二个参数ko.computed),则回调被调用而没有上下文,并且this将是默认window上下文.
如果你传递了第二个参数,那么调用回调就是this你传递的任何东西.
除非将函数作为另一个object(someobject.someMethod())的属性调用,使用.call()or 调用,或者使用与之.apply()绑定的上下文.bind(),否则this将始终是该window对象.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |