如何使用内部对象函数Javascript访问外部对象属性

Phi*_*yen 4 javascript

我正在学习thisJavascript中的关键字.我正在尝试使用内部对象函数访问外部对象属性.例如 :

var outer = {
    prop : 'prop',
    func : function(){
      return this.prop;
    },
    inner : {
      func : function(){
        return this.prop;
      }
    }
  }
  --> outer.func() : 'prop'
  --> outer.inner.func() : undefined
Run Code Online (Sandbox Code Playgroud)

我明白为什么它不起作用但我不知道如何访问prop外部对象.

Aln*_*tak 5

让函数属性的内部知道有关已分配给包含该属性的对象的变量名称的任何内容通常是一个非常糟糕的主意.它引入了不需要的依赖关系,更重要的是防止存在这样一个对象的多个实例.

另一个构造是下面显示的"模块模式",使用闭包和允许任何嵌套属性访问该(本地)变量的变量.

var outer = (function() {
    var prop = 'prop';
    return {
        prop: prop,
        func: function() {
            return prop;
        },
        inner : {
            func : function() {
                return prop;
            }
        } 
    }
})();
Run Code Online (Sandbox Code Playgroud)

  • 在这一点上可能值得注意的是,这反映了所谓的*模块模式*. (3认同)