在dojo模块中引用parent的JSON / javascript成员函数?

时间:2012-02-18 14:25:48

标签: 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;
});

我只想在创建一个新的'a'对象时将对象b作为新对象(b的父对象).a();而不是新的j.a();其中变量j恰好是b的父级。不确定这个解释是否有帮助,但我基本上想要从b。

创建一个新的'a'对象的相对方法

错误在此代码中重现:http://jsfiddle.net/WhhV5/3/

不确定如何在jsfiddle中运行dojo内容,因此代码可能无法运行,但这些是我家xampp上使用的两个文件

1 个答案:

答案 0 :(得分:0)

坦率地说,在这里你没有意义:

  

换句话说,我想在jb()中调用ja(),jc(),这样如果我将var j的名称更改为var m,我就不必更改函数调用ma(),mc()。

您无法在JavaScript中更改变量的名称。变量是Objects引用而不是Object本身(即分配给数据结构的内存范围)。

如果您使用另一个变量j引用m引用的值,则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( ) ;