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

Javascript 对象函数作为参数传递,如何访问该函数中的父对象?,javascript,object,this,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”对象,因此如何在

我有以下情况:

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”对象,因此如何在传递的函数中获取父对象。

您可以像这样创建
dog

function dog()
{
    var name = 'Lumpy';
    this.getName = function() {
        return name;
    }
}
这将创建一个闭包,允许您
getName
始终能够访问
name

如果您希望狗名对您的对象“公开”,您可以使用:

var name = 'Lumpy';
this.name = name;
另一个解决方案是使“右”
对象始终可用于
getName
函数:

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

您可以像这样创建
dog

function dog()
{
    var name = 'Lumpy';
    this.getName = function() {
        return name;
    }
}
这将创建一个闭包,允许您
getName
始终能够访问
name

如果您希望狗名对您的对象“公开”,您可以使用:

var name = 'Lumpy';
this.name = name;
另一个解决方案是使“右”
对象始终可用于
getName
函数:

var dogObj = this;
this.name = 'Lumpy';
this.getName = function() {
  return dogObj.name;
}
试试这个:

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);
试试这个:

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);

你的类在一个地方被称为
dog
,在另一个地方被称为
dog
。你的类在一个地方被称为
dog
,在另一个地方被称为
dog
。让它成为
var name
,你真的不希望它是全局的,是吗?;-)让它成为
var name
,你真的不希望它是全局的,是吗?;-)谢谢,我知道我知道JSFIDLE的存在;-)谢谢,我知道我知道JSFIDLE的存在;-)