1

次のコードを取得しました:

define(function() {

    var core = function() {};
    var module;

    core.prototype.module = {
      setModule: function(name) {
        this.module = name;
        module = name;
      }
    };

    core.prototype.sandbox = {
      getModules: function() {
          // will throw undefined
          console.log(this._module);
          // will maybe not throw an error?
          console.log(modules);
      }
    };

});

define(['kernel'], function(Kernel) {
    var sampleCore = new Core();
    sampleCore.setModule('test');
    sampleCore.getModules();
});

ご覧のとおり、このアプローチでは他の名前空間にアクセスできません。this.module にアクセスする別の方法はありますか?

よろしく

4

3 に答える 3

1

オブジェクトのパラメータを設定するのはどうですか?:

core.sandbox = {
    register: function(obj, name) {
        console.log( obj.module );
    }
};

var a = new core.module.load(/* ..., .... */);

core.sandbox.register( a );
于 2012-09-22T12:04:51.487 に答える
0

使用するcore.module._modules

core.sandbox = {
  register: function(name) {
      var modules = core.module._modules;
  }
};
于 2012-09-22T12:00:56.933 に答える
0

コメントで言ったように、その変数をコアオブジェクトに追加して、他の関数が何か共通のものを保持できるようにすることはできますか?

define(function() {
    var core = function() {
    var that = this;
    };
    var module;
    core.prototype.module = {
      setModule: function(name) {
        that.module = name;
        module = name;
      }
    };

    core.prototype.sandbox = {
      getModules: function() {
          console.log(that.module);
      }
    };

});
于 2012-09-23T20:42:46.923 に答える