首页 > 代码库 > 避免使用 JS 特性 with(obj){}

避免使用 JS 特性 with(obj){}

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

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

3)举例  

<script language="javascript">  
<!--  
function Lakers() {  
       this.name = "kobe bryant";  
       this.age = "28";  
       this.gender = "boy";  
}  
var people=new Lakers();  
with(people)  
{  
       var str = "姓名: " + name + "<br>";  
       str += "年龄:" + age + "<br>";  
       str += "性别:" + gender;  
       document.write(str);  
}  
//-->  
</script>  

 

代码执行效果如下:  
姓名: kobe bryant  
年龄:28  
性别:boy

JavaScript提供了一个with语句,本意是想用它来快捷地访问对象的属性,不幸的是,它的结果可能有时不可预料,所以应该避免使用它

例如

with (obj) {

  a = b

}

它等于这些语句中的某一条,

a = b;

a = obj.b

obj.a = b

obj.b = obj.a

你无法辨别出得到的是这些语句中的哪一条,而且with本身严重影响了Javascript处理器的速度,它的本意是好的,但如果没有它,Javascript语言会更好一点。

避免使用 JS 特性 with(obj){}