如何在javascript函数中创建超级

时间:2011-07-06 13:24:19

标签: javascript jquery

就像这个例子一样:

var teste = {name:'marcos'};
$(teste).each(function(){

    var name = this.name; // i don't want to do that.

    // i want to have access to 'this' inside this function (sayName)
    var sayName = function(){
        alert(name); // there is something like "super" in java? or similar way to do?
    }
    sayName();

});

我该怎么做?

3 个答案:

答案 0 :(得分:2)

this永远不会隐含在JavaScript中(就像在Java中一样)。这意味着如果您不调用函数作为对象的方法,this将不会绑定到合理的东西(它将绑定到浏览器中的window对象)。 如果你想在函数中有一个this,那么该函数应该用作一个方法,即:

var teste = {name:'marcos'};
$(teste).each(function(){

    this.sayName = function(){
        alert(this.name); 
    }
    this.sayName();

});

然后sayName是一个方法,并在this

中调用

答案 1 :(得分:0)

我在互联网上看到了很多例子(基于jQuery的包括):

var that = this;
var sayName = function() {
   alert(that.name);
}

答案 2 :(得分:-1)

这是另一种方式:

var teste = {name:'marcos'};
$(teste).each(function(){

var that = this;

var sayName = function(){
    alert(that.name);
}
sayName();

});

那是你的超级:-) 说真的,没有“超级”,因为它不是扩展名。