它不仅支持缩小,还可以用于闭包。当您创建函数时,例如在回调中使用时,您必须注意调用函数时的“this”是什么。开始使用 Javascript 时的一个常见错误是得到错误的“this”。“var me = this”模式有助于避免这种情况。例如
function doSomething() {
var me = this;
callSomethingAsynchronous(42, function (result) {
// Here 'this' will depend on the caller of the callback functon.
me.theResult = result;
});
}
请注意,像 Ext 这样的框架不鼓励这样做,并让您将范围变量与回调一起传递。
callSomethingAsynchronous(42, me.handlerFunction, me);
它允许您将 handlerFunction 的定义保留在原型上,而不是继续创建它们。有时闭包只是更好的方法,因为您必须包含仅在运行时才知道的信息
function sayHelloInAContrivedWay (name) {
getTheGreetingAsync(function (greeting) {
console.log(greeting + name);
});
}
每当我在一个函数中多次访问它时,我都会使用“var me = this”。缩小器确实将其减少为单个字符。如果我正在访问一个子对象,我也会为此创建一个 var
function keepInnerWombatFit () {
var me = this,
wombat = me.inner.wombat;
wombat.run();
wombat.jump();
wombat.sitDown();
me.excerciseCount++;
}
我已经看到一次又一次地输入(或剪切和粘贴)大量嵌套访问的代码,这些代码无法缩小,可能会花费一点性能并且更难阅读和维护。
this.inner.wombat.run();
this.inner.wombat.jump();
this.inner.wombat.sitDown();