对象函数作为参数传递,如何访问该函数中的父对象?

时间:2011-04-07 14:35:01

标签: javascript object this

我有以下情况:

function dog()
{
    this.name = 'Lumpy';
    this.getName = function() {
        return this.name;
    }
}

function show_dog_name(dogname)
{
    alert(dogname());
}

bigdog = new dog();
show_dog_name(bigdog.getName);

“this”不是指“dog”对象,所以如何在传递函数中获取父对象。

3 个答案:

答案 0 :(得分:2)

var that = this;
this.getName = function() { return that.name; };

答案 1 :(得分:1)

您可以像这样创建dog

function dog()
{
    var name = 'Lumpy';
    this.getName = function() {
        return name;
    }
}

这会创建一个闭包,让getName始终能够访问name 如果您希望狗名称对您的对象“公开”,您可以使用:

var name = 'Lumpy';
this.name = name;

另一种解决方案是让'{1}}函数始终可以使用“正确的”this对象:

getName

答案 2 :(得分:1)

试试这个:

function dog(){
    this.name = 'Lumpy';
    var obj=this;
    this.getName = function() {
        return obj.name;
    }
}

function show_dog_name(dogname){
    alert(dogname());
}

bigdog = new dog();
show_dog_name(bigdog.getName);