我有以下代码.我希望在我的firebug控制台上看到"archive"对象,但是我看到了Window对象.这是正常的吗?
var archive = function(){}
archive.prototype.action = {
test: function(callback){
callback();
},
test2: function(){
console.log(this);
}
}
var oArchive = new archive();
oArchive.action.test(oArchive.action.test2);
Run Code Online (Sandbox Code Playgroud)
oArchive.action.test2
获取对指向的函数的引用,callback
然后使用该函数调用callback()
,这意味着它不作为方法调用,因此this
是全局对象.关键点在于它this
没有绑定到函数:它取决于函数的调用方式.
在这种情况下,您可以this
使用回调函数call
或apply
方法显式指向操作对象(但不是归档对象):
test: function(callback) {
callback.call(this);
},
Run Code Online (Sandbox Code Playgroud)
要使它this
成为归档对象,您需要在以下位置传递归档对象:
var archive = function(){}
archive.prototype.action = {
test: function(callback, archive){
callback.call(archive);
},
test2: function(){
console.log(this);
}
}
var oArchive = new archive();
oArchive.action.test(oArchive.action.test2, oArchive);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3692 次 |
最近记录: |