是否有可能获得this
函数的caller
在JavaScript 中调用,而以支持IE的方式将this
传递给参数以及Firefox / Chrome等?
例如:
var ob = {
callme: function() {
doSomething();
}
}
ob.callme();
function doSomething() {
alert(doSomething.caller.this === ob); // how can I find the `this` that
// `callme` was called with
// (`ob` in this case) without
// passing `this` to `doSomething`?
}
我开始怀疑它不是,但我想我也可以问,因为它会使我的代码更短更容易阅读。
答案 0 :(得分:3)
嗯,我认为最接近技术上将值作为参数传递的最接近的方法是设置this
的值doSomething
功能。
由于doSomething
函数未绑定到任何对象,因此默认情况下,如果您将其称为doSomething();
,则其中的this
值将引用Global对象,这通常是不太有用......
例如:
var ob = {
callme: function () {
doSomething.call(this); // bind the `this` value of `doSomething`
}
};
function doSomething () {
alert(this === ob); // use the bound `this` value
}
ob.callme();