如何将“ this”与ES6类原型方法绑定

时间:2018-06-27 18:54:00

标签: javascript ecmascript-6 this es6-class arrow-functions

我有一个名为B的简单类,它具有基本属性。我有一个名为print的原型方法,它将打印该Class属性。现在,如果我使用正常的函数语法,则一切正常。我想为我的原型使用箭头函数语法,我已经知道箭头函数内部的this将引用global(window)对象。我希望this绑定我的班级。有什么方法可以实现?

class B {
   constructor() {
    this.name ="kannan";
  }
}

B.prototype.print = function(){
    console.log(this);
    console.log(this.name);
 }

 let name = new B();
 name.print() //Prints my name and works correctly

但是,如果我尝试使用箭头语法

 B.prototype.print = () => {
    console.log(this);
    console.log(this.name);
 }

 name.print() //prints this as a global window object

如何使用箭头语法打印我的姓名?

1 个答案:

答案 0 :(得分:0)

我不是100%肯定,但是普通函数语法从运行它的地方获取其上下文。箭头语法从其初始化位置获取其上下文。

尝试在构造函数中设置原型,它应该将“ this”打印为您的类实例。

替代: 将print作为类的函数来编写,您根本就不会遇到问题。

在使用此类的实例时,我认为在类上使用原型不是很好。