1

我正在使用“调用”方法来触发函数并更改范围,但是这样做之后如何获得原始范围?换句话说,如何访问“基础”上下文?

例如,我调用“joe”并将“jill”作为上下文传递。但是,在“问候”的第二个警报中,如何访问“名称:乔”变量?

var joe = {  
    name : "Joe",  
    greet : function (name) {  
        alert(this.name + " says hello to " + name);  

        //Below is wrong. How do I get "Joe"?
        alert('Original Joe context name is: ' + this.name);
    }  
};  

var jill = {  
    name : "Jill"  
};  

//Outputs "Jill says hello to Mike"
joe.greet.call(jill, "Mike"); 

这是此示例的 jsFiddle:http: //jsfiddle.net/ueeRk/

4

2 回答 2

1

你不能。

如果您需要它 - 将其作为函数参数传递。

于 2013-08-21T02:23:35.613 回答
0

没有“基础”上下文。绑定是在调用时动态确定的this,它不是函数固有的。无法从函数内部确定它,因为函数没有“父”对象,实际上它们可以附加到多个对象。正如 zerkms 已经说过的,如果你需要更多的信息到函数中,你必须传递它——或者从一个可访问的范围中获取它,如果有的话。例如,这将起作用:

alert('Original Joe context name is: ' + joe.name);
于 2013-08-21T02:52:41.510 回答