【发布时间】:2014-08-06 21:55:59
【问题描述】:
取下面的 ES6 代码:
class MyClass {
constructor() {
this.attribute = 'test'
}
myMethod() {
console.log(this.attribute)
}
}
// works - prints 'test'
var instance = MyClass()
instance.myMethod()
// doesn't work - outputs "undefined". "this" isn't bound to the function.
var methodRef = instance.myMethod
methodRef()
最初,我预计第二个示例会将“this”绑定到该方法,但经过思考,如果instance.method(arg) 是method(instance, arg) 的语法糖,这是有道理的。首先 - 它只是语法糖吗?在 ES5 中,大多数“类”实现都没有这个问题。其次,有没有办法实现我想要做的事情?
注意:我使用的是es6-transpiler,这可能有问题。
【问题讨论】:
标签: javascript methods binding ecmascript-6