从 javascript 的更高级别访问标识符?

accessing identifiers from an extra level higher in javascript?

我正在 JavaScript 中开展一个项目,我需要能够访问学究对象的变量,该变量是使用子对象中的函数内的构造函数创建的。

var myObject = function(){
   this.foo = 'stuff',
   this.bar = {
      bit: 'things',
      bite: function(){
         return this.this.foo;
      }
   }
}

var test = new myObject();
test.foo = 'blarg'

test.bar.bite() //<-- this should return 'blarg'

此时我很迷茫。我希望在这个特定的应用程序中尽可能少地安装过时软件。少是因为我 space 有限,但更多是因为我只是不喜欢不必要的大东西。而且我喜欢理解我实现的一切,而不是盲目地使用 JS 插件和库。

编辑:我想要的是有一个模板,它在一个对象中包含一个函数,该对象引用来自该模板每个实例中另一个变量的信息。

您可以通过保持对 myObject 的当前实例的引用来访问对象的父级属性。有关示例,请参见下面的代码段。

(function() {
  'use strict';
  
  var log;

  var myObject = function myObject() {
    var self = this;

    this.foo = 'test';
    this.bar = {
      baz: function baz() {
        return self.foo;
      }
    };
  };
  
  document.addEventListener('DOMContentLoaded', function() {
    log = document.querySelector('#log');
    
    var test = new myObject();
    
    writeLog('test.foo before change');
    writeLog('===============================');
    writeLog(test.foo);
    
    test.foo = 'foo was changed.';
    
    writeLog('Value of test.bar.baz() after change');
    writeLog('============================');
    writeLog(test.bar.baz());
  });
  
  
  function writeLog(text) {
    if (log.innerHTML) {
      log.innerHTML += '<br />' + text;
    } else {
      log.innerHTML += text;
    }
  }
})();
<div id="log">
</div>