2013-04-02 101 views
2

我試圖在JavaScript中創建三維對象。我希望能夠運行是這樣的:JavaScript中的三維對象

object1().object2().object3(); 

,但我不希望「object3()」,能夠像這樣被訪問:

object1().object3(); 

,當我試圖這樣的:

function object1(){ 
    alert("object 1"); 
    function object2(){ 
     alert("object 2"); 
     function object3(){ 
      alert("object 3"); 
     } 
    } 
} 

它運行的第一個警報,但隨後鉻給了我這個錯誤:

TypeError: Object #<object1> has no method 'object2' 

,當我試圖這樣的:

function object1(){ 
    alert("object 1"); 
    this.object2 = function(){ 
     alert("object 2"); 
     this.object3 = function(){ 
      alert("object 3"); 
     } 
    } 
} 

運行前兩個,然後鍍鉻給了我這個錯誤:

TypeError: Cannot call method 'object3' of undefined 

回答

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
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() 

也許這樣的事?

http://jsfiddle.net/rd13/T2EG2/