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

发布于 2024-10-31 07:08:19 字数 303 浏览 2 评论 0原文

我有以下情况:

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

I have the following situation:

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" not refers to "dog" object so how get parent object in passed function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

π浅易 2024-11-07 07:08:20
var that = this;
this.getName = function() { return that.name; };
var that = this;
this.getName = function() { return that.name; };
无声静候 2024-11-07 07:08:20

试试这个:

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

Try this:

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);
他不在意 2024-11-07 07:08:20

您可以像这样创建 dog

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

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

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

另一种解决方案包括使“正确”的 this 对象始终可用于您的 getName 函数:

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

You can create dog like this:

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

This create a closure that allow you getName to always be able to access name.
If you want the dog name to be 'public' to your object, you can use:

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

Another solution consist to make the 'right' this object always available for your getName function:

var dogObj = this;
this.name = 'Lumpy';
this.getName = function() {
  return dogObj.name;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文