with 语句用于设置代码在特定对象中的作用域。
它的语法:
with (expression) statement例如:
var sMessage = "hello";
with(sMessage) {
alert(toUpperCase()); //输出 "HELLO"
}
在这个例子中,with 语句用于字符串,所以在调用 toUpperCase() 方法时,解释程序将检查该方法是否是本地函数。如果不是,它将检查伪对象 sMessage,看它是否为该对象的方法。然后,alert 输出 "HELLO",因为解释程序找到了字符串 "hello" 的 toUpperCase() 方法。
提示:with 语句是运行缓慢的代码块,尤其是在已设置了属性值时。大多数情况下,如果可能,最好避免使用它。
with主要用于对一个对象的多个属性进行操作时,使代码更简洁易读,比如:
with(document.getElementsByTagName('DIV')[0].style){
backgroundColor='#FF0000';
color="#FFFFFF";
fontSize='14px';
fontWeight='bold';
textAlign='center';
}
如果只是对一两个属性操作,完全没有必要使用with语句块.
追问:with性能低是吗,建议少用是吗?
回答:这个性能损失可能是很轻微的,或许只有在某些特殊情况下才需要考虑性能问题,比如在一个循环中反复调用with几百几千次,如果仅是在顺序代码中使用几次,这个性能损失可以乎略不计.