Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在同一javascript对象中进行不同级别的通信_Javascript_Jquery_Namespaces_Javascript Objects - Fatal编程技术网

如何在同一javascript对象中进行不同级别的通信

如何在同一javascript对象中进行不同级别的通信,javascript,jquery,namespaces,javascript-objects,Javascript,Jquery,Namespaces,Javascript Objects,我正在尝试命名我的jQuery应用程序的名称空间 例如: var app = { data : { data1: '' }, fn: { setData1: function(value){ app.data.data1 = value } } } 这是可行的,但是有没有更好的解决方案不使用完整路径?此外,对于中等规模的应用程序来说,这是一个好的代码结构吗?Javascript没有语法来指定嵌套文本对象定义中父元素的快捷方式。事

我正在尝试命名我的jQuery应用程序的名称空间

例如:

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

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

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

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

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

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


下面的答案解决了你的问题吗?如果是这样,请勾选答案左侧的绿色复选标记以标记接受的答案,向社区表明您的问题已得到回答,然后您和提供答案的人都将获得一些声誉积分,从而在StackOverflow上获得更多特权。如果你的问题仍然没有得到回答,那么请解释你还有什么困惑。
var app = {
     data1: ''
     setData1: function(value){
          this.data1 = value;
    }
}