我正在开发一种编译成javascript的编程语言,生成的代码包含太多的重复,如:
cls.$init = function(){
this.property1 = {};
this.anotherProperty = [1, 2, 3, 4];
this.yetAnotherProperty = "test";
/* etc */
}
使用with
语句可以将其缩小(在这种情况下,在初始化许多属性时):
cls.$init = function(){
with(this){
property1 = {};
anotherProperty = [1, 2, 3, 4];
yetAnotherProperty = "test";
/* etc */
}
}
但问题是......我应该在生成的代码中使用with
语句吗? (以后不打算修改)
答案 0 :(得分:8)
当使用严格模式时,with
语句将在下一个ECMAScript标准中消失,所以我习惯于不使用它。
https://developer.mozilla.org/en/JavaScript/Strict_mode#Simplifying_variable_uses
答案 1 :(得分:3)
为什么您担心自动生成代码中的重复?在gzip压缩并且在运行时添加with
会产生开销时,它可能会被压缩掉。道格拉斯·克罗克福德也说它会消失:http://www.yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/#comment-586082