js之with

时间:2024-01-03 20:27:14

网上找资料的时候看到有js代码里出现了大量的with语句,有点好奇,这里做下总结:

1)简要说明  
       with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。

   with语句的作用是暂时改变作用域链、减少的重复输入。

2)语法格式  
with(object instance)  
{  
        //代码块  
}

有时候,我在一个程序代码中,多次需要使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现:  
with(objInstance)  
{  
       var str = 属性1;  
.....  
} 去除了多次写对象名的麻烦

3)举例

带有with的js代码

 with(document.forms[0]){
name.value = "lee king";
address.value = "Peking";
zipcode.value = "10000";
}

与之对应的传统的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语句。