Javascript 如何将子对象的作用域设置为父对象?

Javascript 如何将子对象的作用域设置为父对象?,javascript,object,scope,prototype,Javascript,Object,Scope,Prototype,我得到了以下代码: define(function() { var core = function() {}; var module; core.prototype.module = { setModule: function(name) { this.module = name; module = name; } }; core.prototype.sandbox = { getM

我得到了以下代码:

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();
});
如您所见,我无法使用此方法访问其他名称空间。是否有其他方式访问此模块?


关于使用
core.module.\u modules

core.sandbox = {
  register: function(name) {
      var modules = core.module._modules;
  }
};

使用
core.module.\u modules

core.sandbox = {
  register: function(name) {
      var modules = core.module._modules;
  }
};

为对象设置一个参数怎么样

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

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

core.sandbox.register( a );

为对象设置一个参数怎么样

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

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

core.sandbox.register( a );

正如我在一篇评论中所说的,也许你可以在核心对象中添加一个变量,这样其他函数就有了一些共同的东西可以保留

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);
      }
    };

});

正如我在一篇评论中所说的,也许你可以在核心对象中添加一个变量,这样其他函数就有了一些共同的东西可以保留

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);
      }
    };

});

这将在实例化Core时导致leatest出现问题这将在实例化Core时导致leatest出现问题有可能将对象绑定到此对象吗?类似于var parent={child:{}.bind(this)}?你的确切意思是什么?这不是我刚才给你看的吗?:-)你不能引用核心!Core正在使用新Core()进行实例化。所以你的推荐不再有效了…更好,但不是最佳的。我检查是否在中设置了名称空间。prototype解决了这个问题。是否可以将对象绑定到此名称空间?类似于var parent={child:{}.bind(this)}?你的确切意思是什么?这不是我刚才给你看的吗?:-)你不能引用核心!Core正在使用新Core()进行实例化。所以你的推荐不再有效了…更好,但不是最佳的。我检查在.prototype中设置名称空间是否解决了这个问题我认为您的范围是setmodule/getmodule。在core中创建一个=this的var,然后使用该.module?@zladuric您能提供一个示例,以便我将其标记为答案吗?在那里,添加它。但是我没有尝试这个,所以首先测试它:)我认为您的这个范围是setmodule/getmodule。在core中创建一个=this的var,然后使用该.module?@zladuric您能提供一个示例,以便我将其标记为答案吗?在那里,添加它。我没有尝试过,所以先测试一下:)