当编写代码服从ECMAScript 6时,无法获取构造函数方法中定义的属性

时间:2017-07-18 02:20:00

标签: javascript

我是Javascript和Node.js的新手,我正在尝试编写代码服从ECMAScript 6,但我无法在构造函数方法中获取属性,而它可以用旧的写样式引用:

chgrp

1 个答案:

答案 0 :(得分:2)

  

[...]我试图编写代码服从ECMAScript 6,但我无法在构造函数方法中获取属性,而它可以用旧的写样式引用

请注意,问题不是你的“构造函数”在任何一种情况下都只是fin:它将在实例上定义name属性。

这是您在注释和未注释的name方法中访问walk()的方式。

箭头函数()=>不是function(){}的捷径,它的出现是为了避免将环境的引用context定义为function

通过上面的例子,我在ES5中描述它:

'use strict'

function Animal (name) {
  this.name = name
}


Animal.prototype.walk = (destination) => {
  console.log(this.name + " walk to " + destination)  //undefined walk to China
}

//the above ES6 will be transform to ES5 like this:
var self = this; //reference `this` - the environment context into variable `self`.
Animal.prototype.walk = function(destination) {
  console.log(self.name + " walk to " + destination);
}


const cat = new Animal("Cat")
cat.walk('China'); // undefined walk to China.

我希望按照上面的示例,您可以了解到this到底是什么。因此,请相应地使用arrow function“。