内部对象访问容器

时间:2010-01-20 18:55:39

标签: javascript

内部对象(t1)是否有办法访问其容器对象。

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

执行以下代码时,我得到一个错误'this.fnc1不是函数',因为这是指t1对象而不是t对象。

有没有办法访问fnc1?

2 个答案:

答案 0 :(得分:2)

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

t.fnc1()

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

答案 1 :(得分:0)

尝试将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();