0

我正在使用 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'

在这一点上,我很迷茫。我希望在这个特定的应用程序中尽可能少地使用英国媒体报道软件。不是因为我空间有限,而是因为我只是不喜欢不必要的大东西。而且我喜欢了解我实现的所有东西,而不是盲目地使用 JS 插件和库。

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

4

1 回答 1

0

您可以通过保留对当前实例的引用来访问对象的父级属性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>

于 2018-03-17T00:31:30.510 回答