从对象内部的函数获取范围外的变量 - Javascript

时间:2018-03-03 00:11:55

标签: javascript function class scope scoping

我在Class内的对象中有一个函数。

该类的对象已初始化,我想调用该函数,但该函数需要在类的构造函数上定义的变量。



class someClass {
  constructor() {
    this.foo = "bar";

    this.print = {
      variable: function() {
        console.log(this.foo);
      }
    };

  }
}

// And I call it from the global scope

var someObject = new someClass();

someObject.print.variable();




会打印

  

未定义

我知道的是一个不同的范围,也许我无法访问它。

这样做的目的是让我的职能有一些顺序。

我想访问我的函数,如someObject.print.variable();

2 个答案:

答案 0 :(得分:2)

使用箭头函数,它将绑定到定义它的对象中的原始this

class someClass {
  constructor() {
    this.foo = "bar";

    this.print = {
      variable: () => {
        console.log(this.foo);
      }
    };

  }
}

// And I call it from the global scope

var someObject = new someClass();

someObject.print.variable();

答案 1 :(得分:1)

这样的事可能吗?

<script>
class someClass {
  constructor() {
    let that = this;
    this.foo = "bar";

    this.print = {
     variable: function() {
        console.log(that.foo);
       }    
    };

  }
}

//And I call it from the global scope

var someObject = new someClass();

someObject.print.variable();
</script>