2014-09-06 44 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