ES 6类:在另一个范围内访问“this”

时间:2015-10-25 20:04:42

标签: javascript ecmascript-6

我在NodeJS 4中有一个ES6类。 在构造函数中,我想修改一个对象的原型,以便它现在使用这个类实例来执行一个操作。

但是,当然,在原型范围中,this并未引用我正在创建的类的实例。

class Generic {
  constructor() {
    this.myClass = util._extend({}, aClass); //shallow copy
    this.myClass.prototype.run = function(fn) {
      var str = this.toString;
      //in the next line, _this_ should refer to the Generic instance.
      this.run(str, fn);
    };
  }

  do() {
    return this.myClass;
  }

  run(str, fn) {
    ...
  }

如何引用在myClass原型范围上创建的Generic类实例?

1 个答案:

答案 0 :(得分:3)

一些选项:

  • bind

    this.myClass.prototype.run = (function(fn) {
      // `this` is the Generic instance.
    }).bind(this);
    
  • that

    var that = this;
    this.myClass.prototype.run = function(fn) {
      // `that` is the Generic instance.
    };
    
  • 箭头功能:

    this.myClass.prototype.run = fn => {
      // `this` is the Generic instance.
    };