【问题标题】:inner object accessing container内部对象访问容器
【发布时间】:2010-01-20 18:55:38
【问题描述】:

有没有办法让内部对象 (t1) 访问它的容器对象。

var t = {
                fnc1: function(){
                    alert("fnc1");
                },
                t1: {
                    fnc2: function(){
                        alert("fnc2");
                    },
                    fnc3: function(){
                        this.fnc1();
                    }
                }
            };
t.t1.fnc3();

执行以下代码时,我收到错误“this.fnc1 不是函数”,因为 this 指的是 t1 对象而不是 t 对象。

有什么方法可以访问 fnc1 吗?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    当然,只要你不覆盖变量:

    t.fnc1()
    

    如果您想将fnc1() 作为t.t1 的方法调用,请使用call()apply()

    【讨论】:

      【解决方案2】:

      尝试将 Javascript 用作纯 OO 语言,常常会遇到很多挫折。

      您可以尝试使用 Javascript 的特定功能,主要是函数和闭包。
      我以你为例并做了一个变体:

      var t = function(){
          var str = "fnc", 
              fnc1 = function(){
                  alert( str + "1");
              };
          return {
              fnc1:fnc1,
              t1:{
                  fnc2:function(){
                      alert( str + "2");
                  },
                  fnc3:fnc1
              }
          };
      };
      t().t1.fnc3();
      

      【讨论】:

        猜你喜欢
        • 2021-08-18
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多