我正在尝试在JavaScript中创建三维对象。我希望能够运行这样的东西:
object1().object2().object3();
但我不希望能够像这样访问“object3()”:
object1().object3();
当我尝试这个时:
function object1(){
alert("object 1");
function object2(){
alert("object 2");
function object3(){
alert("object 3");
}
}
}
它运行第一个警报,但随后chrome给了我这个错误:
TypeError: Object #<object1> has no method 'object2'
当我尝试这个时:
function object1(){
alert("object 1");
this.object2 = function(){
alert("object 2");
this.object3 = function(){
alert("object 3");
}
}
}
它运行前两个然后chrome给我这个错误:
TypeError: Cannot call method 'object3' of undefined
答案 0 :(得分:4)
要进行方法调用链接,您需要返回对this
的引用:
function object1(){
alert("object 1");
this.object2 = function(){
alert("object 2");
this.object3 = function(){
alert("object 3");
}
return this;
}
return this;
}
(工作)在这里小提琴:http://jsfiddle.net/MmJjR/
(作为旁注,这不是“三维对象”。对象不像数组。这些是嵌套对象,其中每个都有对下一个“子”对象的引用。很容易理解是什么你的意思是,我以为我会在那里扔一个术语。)
答案 1 :(得分:1)
object1 = function(){
console.log("object 1");
this.object2 = function(){
console.log("object 2");
this.object3 = function(){
console.log("object 3");
}
return this;
}
return this;
}
object1().object2().object3()
也许是这样的?