2014-09-06 47 views
0

我在我的gulpfile.js裏有一個類似於這個的配置對象。在gulp配置文件中訪問JavaScript對象中的兄弟鍵值

var config = { 
    sass: { 
     source: '...', 
     dest: '...', 
     config: { 
      style: 'compressed', 
      errLogToConsole: false 
     }, 
     ... 
    }, 
    notify: { 
     ... 
    }, 
    ... 
    somethingElse: { 
     rootPath: '/some/specific/path', 
     folderName: '/projectRootFolder', 
     someValueThatReuseTwoDeclaredAbove: this.rootPath this.folderName, 
     anotherKey: this.someValueThatReuseTwoDeclaredAbove '/vendor' 
    } 
}; 

我想重用我的變量根據第somethingElse類似的聲明在預覽對象。

當我嘗試像這樣訪問它們時this.somethingElse.rootPath我收到錯誤Cannot read property 'rootPath' of undefined。當我嘗試像這樣訪問它this.rootPath然後我沒有得到錯誤,但文件從未複製到配置中指定的位置。 如何從當前對象中訪問鍵,以便在聲明變量時可以重用它們的值?

回答

0

你應該只是做你的配置在多個步驟:

var somethingElseConfig = { 
    rootPath: '/some/specific/path', 
    folderName: '/projectRootFolder', 
}; 
somethingElseConfig.someValueThatReuseTwoDeclaredAbove = somethingElseConfig.rootPath + somethingElseConfig.folderName; 
somethingElseConfig.anotherKey = somethingElseConfig.someValueThatReuseTwoDeclaredAbove + '/vendor'; 

var config = { 
    //... 
    somethingElse: somethingElseConfig, 
    //... 
}; 

如何訪問鍵從當前對象,所以我可以聲明變量時,重用自己的價值?

在JavaScript中,你不能。

實際上沒有當前對象,因爲該對象尚未創建。所以你不能訪問一個尚未存在的對象的屬性。

+0

謝謝你的建議,但這或多或少是我已經將它作爲解決方法。我想把它作爲一個對象。主要是因爲我正在學習JS,我想知道如何面向未來。另一個原因是我喜歡這樣。必須有一些優雅的方式直接做到這一點。如果有人願意幫助我,或者至少讓我指向正確的方向,我會等待一段時間。如果沒有人出現,我會接受你的答案作爲其他人的解決方法,即使它沒有幫助我。 – theStudent 2014-09-08 14:58:37

+0

@theStudent你不能在JavaScript中。 (我不知道是否有另一種語言,你可以) – Volune 2014-09-08 15:29:06

+0

嗯,這是奇怪的。我知道對於普通的「level」對象,這個'this.key'是可能的。這也是我期望作爲語言本身包含的一項功能。但也許你是對的。我仍在學習JavaScript,聽起來你比我知道的更多。我知道JS不支持封裝,所以它可能是正確的。我知道在新版本中它已經或者已經有一段時間了。那麼謝謝你的時間,我現在就離開它。 – theStudent 2014-09-10 06:12:20