2015-09-20 33 views
-2

我想命名空間我的jQuery應用程序。如何在同一個javascript對象中進行不同級別的溝通

例子:

var app = { 
    data : { 
    data1: '' 
    }, 
    fn: { 
    setData1: function(value){ 
     app.data.data1 = value 
    } 
    } 
} 

這工作,但有一個更好的解決方案,它不使用完整路徑?而且,這是一個適合中型應用程序的良好代碼結構嗎?

+0

下面的答案是否解決了您的問題?如果是這樣,請通過選中該答案左側的綠色複選標記來標記已接受的答案,以向社區表明您的問題已得到解答,然後您和提供答案的人都將獲得一些可導致更多特權在這裏StackOverflow。如果你的問題還沒有得到答覆,那麼請解釋你還有什麼困惑。 – jfriend00

回答

1

Javascript沒有語法來指定嵌套文字對象定義中父元素的快捷方式。實際上,在另一個對象內部的嵌套對象可以在任何地方被定義,並且引用被分配到對象中,並且可以被分配到許多對象中,所以就運行時而言,在運行時沒有真正的這樣的事情。 JavaScript只是不這樣工作。因此,如果你想引用另一個不在它下面的對象的元素,那麼你將不得不使用對象名稱的完整路徑從對象的頂部開始。

至於這是否是一個很好的方法來做到這一點,那完全是上下文相關的。乍一看(沒有提供其他上下文),我不明白爲什麼你的對象需要fndata級別。數據屬性和方法可以處於相同的級別,通常可以在不添加額外級別的情況下完成。您會發現不需要的額外級別會增加代碼中的鍵入量,並且不會提高性能。你應該給你的方法和數據屬性提供足夠有意義的名稱,以便清楚它們是什麼以及它們用於什麼。像data1這樣的名稱並不是一個特別好的例子。

此外,一般不是理由做出setData1()方法爲公共data1屬性,但如果你把它們放在同一水平上,你可以將它設置到app方法不使用this指針如果有人撥打app.setData1()

var app = { 
    data1: '' 
    setData1: function(value){ 
      this.data1 = value; 
    } 
} 
相關問題