【问题标题】:How to return settings from an object如何从对象返回设置
【发布时间】:2012-10-16 04:40:04
【问题描述】:

我做过这样的事情:

myProject =

  settings:
    duration: 500
    value: 'aValue'

  aFunction: ->
    myElement.fadeOut myProject.settings.duration

这只是一个示例,但我的项目就是这样。很多时候我必须参考设置来获得某个值,而且我总是要写myProject.settings.value,而且看起来不太好。

我的问题是,我可以调用返回所需值的函数吗?像这样的:

aFunction: ->
  myElement.fadeOut getSetting(duration)

我试过了

getSetting: (param) ->
  myProject.settings.param

但是失败了?这是为什么? 谢谢!

【问题讨论】:

  • 失败了怎么办?你有错误吗?
  • 我总是得到undefined

标签: coffeescript


【解决方案1】:

要通过变量访问对象属性,您可以:

object[key]

在咖啡脚本中,最后一行应该是返回值,在您的示例中: 请注意 @ (= this)。

myProject =

  settings:
    duration: 500
    value: 'aValue'

  fadeOut: ($element) ->
    $element.fadeOut @getSetting('duration')

  getSetting: (key) ->
    @settings[key]

myProject.fadeOut($myElement)

javascript:

var myProject;

myProject = {
  settings: {
    duration: 500,
    value: 'aValue'
  },
  fadeOut: function($element) {
    return $element.fadeOut(this.getSetting('duration'));
  },
  getSetting: function(key) {
    return this.settings[key];
  }
};

myProject.fadeOut($myElement);

【讨论】:

  • 是的,这行得通!但我想传递想要的参数,如myElement.fadeOut(aFunction(duration)) - 我存储了大约 10 到 15 个参数。我当前的解决方案有效,但看起来像 myElement.fadeOut(myProject.settings.duration)
  • 嗯,当我想到它时 - 如果没有更好的解决方案,@settings 让我的代码更好一点!
  • 对不起,我不明白你真正想要什么,请看我的编辑(小提琴已被编辑)。重要的部分是@settings[key] 而不是@settings.key。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 2021-05-25
  • 2019-10-13
  • 2011-07-27
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
相关资源
最近更新 更多