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

JSON/javascript member function referencing parent in dojo module?

本文关键字:JSON javascript 成员 函数 模块 dojo 引用      更新时间:2023-09-26

不确定我能正确地说出这个词,所以这里有一些代码:

注意:这是在一个名为.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"对象时作为新对象(b的父对象)。a();而不是新的j.a();其中变量j恰好是b的父变量。不确定这个解释是否有帮助,但我基本上想要一种从b创建新的"a"对象的相对方法。

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

不知道如何在jsfiddle中运行dojo,所以代码可能不会运行,但这是我的主页xamp

上使用的两个文件

坦率地说,这里是你没有意义的地方:

换句话说,我想在j.b()中调用j.a(),j.c(),这样,如果我将var j的名称更改为var m,我就不必将函数调用更改为m.a()、m.c()。

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

如果用另一个变量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( ) ;