with 语句通常用来缩短特定情形下必须写的代码量。
with 语句为一个或一组语句指定默认对象,用于设置代码在特定对象中的作用域。
用法:with (<对象>) {<语句>;}
在下面的例子中,请注意 Math 的重复使用:
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10);
y = Math.tan(14 * Math.E);
当使用 with 语句时,代码变得更短且更易读:
with (Math) {
x = cos(3 * PI) + sin(LN10);
y = tan(14 * E);
}
又如:
var sMessage = "hello"; with(sMessage) { alert(toUpperCase()); //输出 "HELLO" }
在这个例子中,with 语句用于字符串,所以在调用 toUpperCase() 方法时,解释程序将检查该方法是否是本地函数。如果不是,它将检查伪对象 sMessage,看它是否为该对象的方法。然后,alert 输出 "HELLO",因为解释程序找到了字符串 "hello" 的 toUpperCase() 方法。
提示:with 语句是运行缓慢的代码块,尤其是在已设置了属性值时。大多数情况下,如果可能,最好避免使用它。因为它会去检查大括号内的每个变量是否是这个对象的属性或者方法,这样使得JavaScript的执行时间增加。
详细出处参考:http://www.jb51.net/article/13600.htm
http://blog.sina.com.cn/s/blog_6419bc670100iury.html
http://blog.csai.cn/user1/14586/archives/2007/15413.html