ES6 Class'the'用于非类方法

时间:2017-04-06 03:25:54

标签: javascript ecmascript-6 es6-class

let dispNameExt = () => {
  console.log(this.name);
};

class MyName {
  constructor() {
     this.name = 'lsr';
  }

  dispName() {
    dispNameExt();
  }
}

如何使这段代码工作,在类的这个中,通过类外部的外部方法访问。

3 个答案:

答案 0 :(得分:4)

let dispNameExt = (model) => {
    console.log(model.name);
};

class MyName {
    constructor() {
       this.name = 'lsr';
    }

    dispName() {
        dispNameExt(this);
    }
}

答案 1 :(得分:2)

由于您正在为dispNameExt使用箭头功能,我认为唯一的方法是将this值作为参数传递给函数。

let dispNameExt = (thisValue) => {
    console.log(thisValue.name);
};

但如果您将其更改为使用普通function,则有几种方法可以在函数内指定this的值。

function dispNameExt() {
    console.log(this.name);
}

class MyName {
    constructor() {
        this.name = 'lsr';
    }

    dispName() {
        // Using .apply()
        dispNameExt.apply(this);

        // Using .call()
        dispNameExt.call(this);

        // Using .bind()
        dispNameExt.bind(this)();
    }
}

答案 2 :(得分:0)

它应该被重构为静态道具。无需实例化类即可访问。

由于name属性名称is reserved,必须选择另一个属性名称。

let dispNameExt = () => {
  console.log(MyName.title);
};

class MyName {
  static get title() {
     return 'lsr';
  }

  dispName() {
    dispNameExt();
  }
}