网上找资料的时候看到有js代码里出现了大量的with语句,有点好奇,这里做下总结:
1)简要说明
with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。
with语句的作用是暂时改变作用域链、减少的重复输入。
2)语法格式
with(object instance)
{
//代码块
}
有时候,我在一个程序代码中,多次需要使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现:
with(objInstance)
{
var str = 属性1;
.....
} 去除了多次写对象名的麻烦
3)举例
带有with的js代码
1 with(document.forms[0]){ 2 name.value = "lee king"; 3 address.value = "Peking"; 4 zipcode.value = "10000"; 5 }
与之对应的传统的js写法
document.forms[0].name.value = "lee king"; document.forms[0].address.value = "Peking"; document.forms[0].zipcode.value = "10000";
可以看出with语句的简洁明了,不过在代码的世界里是很难找到真正的完美。
s的解释器需要检查with块中的变量是否属于with包含的对象,这将使with语句执行速度大大下降,并且导致js语句很难被优化。为了兼顾速度与代码量可以找到一个比较折衷的方案:
js代码:
var form = document.forms[0]; form.name.value = "lee king"; form.address.value = "Peking"; form.zipcode.value = "10000";
所以在以后的高效代码开发中我们应该尽可能的避免使用with语句。