【问题标题】:javascript calling parent method from childjavascript从孩子调用父方法
【发布时间】:2012-09-08 02:15:56
【问题描述】:

我有以下对象:

var party =
{
   food:
   {
       serve: function () {
         // I want to call turnOff method from here
       }

       cleanUp: function () {
       }
   }

   music:
   {
       turnOff: function () {
       }
   }
}

所以正如评论指出的那样,我想从音乐对象调用 turnOff 方法,我该怎么做? this 指的是食物对象,但我需要访问音乐对象...

【问题讨论】:

    标签: javascript object scope


    【解决方案1】:
    var party =
    {
       food:
       {
           serve: function () {
             party.music.turnOff();
           },
           cleanUp: function () {
           }
       },
       music:
       {
           turnOff: function () {
           }
       }
    }
    

    【讨论】:

    • 从可维护性的角度来看,这实际上更清晰......但如果不是对范围进行更多保护的话,其他响应同样有效。 :)
    【解决方案2】:

    使用构造函数而不是带有引用父对象的变量的文字

    var party = new (function()
    {
       var self = this;
       this.food =
       {
           serve: function () {
               self.music.turnoff();
           },
    
           cleanUp: function () {
           }
       }
    
       this.music = 
       {
           turnOff: function () {
           }
       }
    })();
    

    【讨论】:

    • 与简单地调用party.music.turnOff()相比,这样做有什么好处?
    • 它不会在全局/任何范围内搜索派对吗?
    • 没有。除了您不再通过显式名称引用。虽然,这里确实有一个闭包来抑制潜在的变量冲突。
    【解决方案3】:

    将其称为party.music.turnOff()。

    仅供参考,您上面的代码块无效。您缺少一些逗号 - 在 servefood 右括号之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      相关资源
      最近更新 更多