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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从对象内部的函数获取范围外的变量 - Javascript相关的知识,希望对你有一定的参考价值。

我在一个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();

答案

使用箭头函数,它将绑定到定义它的对象中的原始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();
另一答案

这样的事可能吗?

<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>

以上是关于从对象内部的函数获取范围外的变量 - Javascript的主要内容,如果未能解决你的问题,请参考以下文章

闭包,闭包用途,callapplybind 的用法

局部变量 与 全局变量

安装jmeter 环境变量都配置好了 可还是出现不是内部外部命令

js作用域链中变量提前的问题

jmeter为啥要配置环境变量

javascript中的闭包