获得在JavaScript中调用函数调用者的“this”

时间:2010-05-31 03:19:13

标签: javascript

是否有可能获得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`?
}

我开始怀疑它不是,但我想我也可以问,因为它会使我的代码更短更容易阅读。

1 个答案:

答案 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();