在大量使用this
的“类”函数中缓存对此上下文的引用是否有意义?
我认为缩小器可以用更短的东西替换self
,这会导致文件小一点。这有什么缺点,你会这样做,如果没有,为什么不呢?
示例:
var Klass = function() {
var self = this;
self.foo = 'qux';
self.bar = 'quux';
self.foobar = true;
self.foobaz = false;
}
答案 0 :(得分:1)
1)Imho var self = this
是一个构造(作为开发人员)我不想被打扰:我不想改变代码来帮助缩小器。代码应该只存在执行该任务所需的行。
2)我还没有看到一个例子(还有!),文件大小的差异很大,我会重新考虑原则1)
答案 1 :(得分:1)
表现明智我怀疑会有任何显着差异。因此,使用self
代替this
:
self
嵌套函数中的引用。使用self
会产生申报费用。因此,如果您只是声明一些参数,则使用self
是没有意义的。因此,我编写了一个脚本,用于计算self
对this
使用{/ 1}}的可行性。
alert(test(0));
function test(n) {
var thisFunction = createThisFunction(n).toString();
var selfFunction = createSelfFunction(n).toString();
if (selfFunction.length < thisFunction.length) return n;
else return test(n + 1);
}
function createThisFunction(n) {
var body = repeat(n, "this.x=null;");
return new Function(body.join(""));
}
function createSelfFunction(n) {
var decl = "var s=this;";
var body = repeat(n, "s.x=null;");
return new Function(decl + body.join(""));
}
function repeat(n, x) {
if (n === 0) return [];
else return [x].concat(repeat(n - 1, x));
}
答案是......鼓号:four。这意味着如果您声明了三个或更少的参数,那么最好坚持使用this
。如果您有四个或更多参数,那么最好使用self
:
this
的函数在缩小时比使用self
的函数少2个字符。this
的函数在缩小时比使用self
的函数多1个字符。你可以随意使用小提琴,并为自己验证我的断言:http://jsfiddle.net/dB6VS/
有时您需要一个嵌套函数才能访问其父函数的this
参数。在这种情况下,您无论如何都需要创建一个self
变量。因此,如果您有任何需要访问this
的嵌套函数,那么只需切换到self
。
简而言之,需要访问this
的嵌套函数否决了self
的4个声明规则。