多维物体

时间:2011-05-13 17:26:11

标签: javascript

如何制作多维物体?

function tst(){
    this.a = function(){
        alert(this.b.abc.c());
    };

    this.b = function(){

    };
}
var obj = new tst();
obj.b.abc = function(){
    this.c = function(){
        return 'hello world';
    };
};

obj.a();

2 个答案:

答案 0 :(得分:0)

似乎在这里工作正常:

http://jsfiddle.net/maniator/e3pfu/

function tst(){
    this.a = function(){

    };

    this.b = function(){

    };
}
var obj = new tst();
obj.b.abc = function(){
    alert(this);

    this.c = function(){

    };
};

obj.b.abc();

答案 1 :(得分:0)

问题在于此代码:

obj.b.abc = function(){
    this.c = function(){
        return 'hello world';
    };
};

调用abc函数创建obj.b.abc.c函数,但obj.b.c函数。因此,this.b.abc.c()会抛出错误,因为这样的函数不存在。


这将使其有效:

function tst() {
    this.a = function() {
        alert( this.b.abc.c() );
    };

    this.b = function() {

    };
}

var obj = new tst();

obj.b.abc = function() {
    this.abc.c = function() { // <--- NEW 
        return 'hello world';
    };
};

obj.b.abc(); // <--- NEW
obj.a();

现场演示: http://jsfiddle.net/vgpNU/