javascript - JSON/javascript成员函数在dojo模块中引用父级?

标签 javascript dojo

不确定我是否能正确表达,所以这里有一些代码:

注意:这是一个名为 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#aj#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/

相关文章:

javascript - 以编程方式在 BorderContainer 中创建的 AccordionContainer 存在大小问题

javascript - bug .innerHTML IE8 的一种解决方案

javascript - 在 JavaScript 中创建链接,并将其集成到 createTextNode()

javascript - Dojo 表单处理事件

javascript - 道场可移动: Limit Moving to horizontal

javascript - 如何使用事件监听器复制 DOM 节点?

javascript - FullCalendar,如何更改日期格式?

javascript - 如何判断 obj 是 jquery 还是普通 javascript

javascript - 如何在另一个方法中创建的对象上使用 Jasmine spy ?

javascript - dojo 的 gfx 表面例程是否有删除?