Page 116 - 你不知道的JavaScript(下卷)
P. 116
var self = this;
btn.addEventListener( "click", function(){
// ..
self.makeRequest(..);
}, false );
}
};
这就更恶心了。
关于 this 绑定规则和陷阱的更多信息,参见本系列《你不知道的 JavaScript
(上卷)》第二部分的 1~2 章。
好,那么所有这些又和简洁方法有什么关系呢?回想一下我们的 something(..) 方法定义:
runSomething( {
something: function something(x,y) {
// ..
}
} );
这里的第二个 something 提供了一个超级方便的词法标识符,总是指向这个函数本身,为
我们提供了一个完美的用于递归、事件绑定 / 解绑定等的引用——不会和 this 纠缠也不需
要并不可靠的对象引用。
非常棒!
所以,现在我们可以把这个函数引用重构为下面的 ES6 简洁方法形式:
runSomething( {
something(x,y) {
if (x > y) {
return something( y, x );
}
return y - x;
}
} );
第一眼看上去很好,但是这段代码会崩溃。return something(..) 调用将找不到 something
标识符,因此会得到一个 ReferenceError。这是为什么呢?
前面的 ES6 代码片段会被解释为:
runSomething( {
something: function(x,y){
if (x > y) {
语法 | 93
图灵社区会员 avilang(1985945885@qq.com) 专享 尊重版权