不确定我是否能正确表达,所以这里有一些代码:
注意:这是一个名为 a.js 的文件,它是一个 dojo 模块
define([], function() {
var j = {
a : function() {
//a object
},
b : function() {
//b object
this.x = new j.a();// this works
this.y = new this.a(); // this causes error later, see jsfiddle link below
},
c : function() {
//c object
}
}
return j;
});
我只是希望对象 b 在创建新的“a”对象时将其作为 new (b 的父对象)。a();而不是 new j.a();其中变量 j 恰好是 b 的父级。不确定这个解释是否有帮助,但我基本上想要一种从 b 创建新“a”对象的相对方法。
此代码中重现了错误:http://jsfiddle.net/WhhV5/3/
不确定如何在 jsfiddle 中运行 dojo 内容,因此代码可能无法运行,但这是我家 xampp 上使用的两个文件
最佳答案
坦率地说,这是你没有意义的地方:
In other words, I want to call j.a(), j.c() in j.b() such that if I change the var j's name to var m, I won't have to change the function calls to m.a(), m.c().
您无法在 JavaScript 中更改变量的名称。变量是对象
的引用,而不是对象
本身(即分配给数据结构的内存范围)。
如果您确实使用另一个变量 m
引用 j
引用的值,j
仍将存在于内存中。您只需创建另一个对 Object
的引用,j
也引用该对象。您没有更改其名称。
因此,如果您调用 m#b
,它将调用 j#a
和 j#c
,不会出现与 j 一样的问题
仍然存在。
var j = {
a: function( ) { console.log("(!!) a") ; } ,
b: function( ) { new this.a( ) ; } ,
c: function( ) { console.log("(!!) b") ; } ,
} ;
var m = j ;
m.b( ) ;
关于javascript - JSON/javascript成员函数在dojo模块中引用父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342019/