Javascript 当编写代码遵循ECMAScript 6时,无法获取构造函数方法中定义的属性
我不熟悉Javascript和Node.js,我尝试按照ECMAScript 6编写代码,但我无法在构造函数方法中获得属性定义,但可以使用旧的编写样式引用它:Javascript 当编写代码遵循ECMAScript 6时,无法获取构造函数方法中定义的属性,javascript,Javascript,我不熟悉Javascript和Node.js,我尝试按照ECMAScript 6编写代码,但我无法在构造函数方法中获得属性定义,但可以使用旧的编写样式引用它: 'use strict' function Animal (name) { this.name = name } // Animal.prototype.walk = (destination) => { // console.log(this.name + " walk to " + destination)
'use strict'
function Animal (name) {
this.name = name
}
// Animal.prototype.walk = (destination) => {
// console.log(this.name + " walk to " + destination) //undefined walk to China
// }
Animal.prototype.walk = function (destination) {
console.log(this.name + " walk to " + destination) //Cat walk to China
}
const cat = new Animal("Cat")
cat.walk('China')
I want to know the reason, thanks!
[…]我试图编写符合ECMAScript 6的代码,但我无法在构造函数方法中获得属性define,而它可以用旧的编写样式引用
请注意,问题不在于您的“构造函数”在这两种情况下都能正常工作:它将在实例上定义一个name
属性
这是您在有注释和无注释的walk()
方法中访问name
的方式
箭头函数()=>
不是函数(){}
的快捷方式,它的诞生是为了避免将环境的引用上下文定义到函数中
通过上面的例子,我在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.
我希望按照上面的例子,您可以了解这到底是什么。因此,请使用箭头功能
“响应”
[…]我试图编写符合ECMAScript 6的代码,但我无法在构造函数方法中获得属性define,而它可以用旧的编写样式引用
请注意,问题不在于您的“构造函数”在这两种情况下都能正常工作:它将在实例上定义一个name
属性
这是您在有注释和无注释的walk()
方法中访问name
的方式
箭头函数()=>
不是函数(){}
的快捷方式,它的诞生是为了避免将环境的引用上下文定义到函数中
通过上面的例子,我在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.
我希望按照上面的例子,您可以了解这到底是什么。因此,请使用箭头函数
“响应”。非箭头函数不是“旧式”;他们是不同的风格,有不同的规则。如果要将内容附加到原型,请继续使用函数表达式<代码>类
也存在于ES6中。非箭头函数不是“旧式”;他们是不同的风格,有不同的规则。如果要将内容附加到原型,请继续使用函数表达式<代码>类
也存在于ES6中。我写了一篇关于范围和上下文的文章,希望能有所帮助:)谢谢@try catch finally更新我的答案:)我写了一篇关于范围和上下文的文章,希望能有所帮助:)谢谢@try catch finally更新我的答案:)