我是Javascript和Node.js的新手,我正在尝试编写代码服从ECMAScript 6,但我无法在构造函数方法中获取属性,而它可以用旧的写样式引用:
chgrp
答案 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
“。