【问题标题】:How to communicate different levels in the same javascript object如何在同一个 javascript 对象中通信不同级别
【发布时间】:2015-12-17 13:15:42
【问题描述】:

我正在尝试命名我的 jQuery 应用程序。

例子:

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

这可行,但有没有更好的不使用完整路径的解决方案?此外,对于中型应用来说,这是否是一个好的代码结构?

【问题讨论】:

  • 以下答案是否解决了您的问题?如果是这样,请通过选中该答案左侧的绿色复选标记来标记已接受的答案,以向社区表明您的问题已得到解答,然后您和提供答案的人都将获得一些声誉积分,这可能会导致StackOverflow 上的更多权限。如果您的问题仍未得到解答,请说明您还有什么困惑。

标签: javascript jquery namespaces javascript-objects


【解决方案1】:

Javascript 没有用于在嵌套文字对象定义中指定父元素快捷方式的语法。而且,事实上,Javascript 可以在任何地方定义另一个对象内的嵌套对象,并将引用分配给对象,并且可以分配给许多对象,因此就 Javascript 而言,在运行时没有真正的父对象。 Javascript 不能那样工作。

因此,如果您想引用对象的另一个不在其下方的元素,则必须使用从对象顶部开始的对象名称的完整路径。

至于这是否是一个好方法,这完全是特定于上下文的。乍一看(并且没有提供其他上下文),我不明白为什么您的对象中需要 fndata 级别。数据属性和方法可以处于同一级别,并且通常无需添加额外级别即可完成。您会发现不必要的额外级别只会增加代码中的输入量并且不会提高性能。您应该为您的方法和数据属性提供足够有意义的名称,以便非常清楚它们是什么以及它们的用途。 data1 这样的名字并不是一个特别好的例子。

此外,通常没有理由为公共data1 属性创建setData1() 方法,但是如果将它们放在同一级别,则可以在方法中使用this 指针如果有人调用app.setData1(),将设置为app

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

【讨论】:

    猜你喜欢
    • 2020-11-12
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多