javascript学习指南|JavaScript with 语句学习

更新时间:2019-10-21    来源:php常用代码    手机版     字体:

【www.bbyears.com--php常用代码】


语法格式 

with(object instance) 

        //代码块 

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

with(objInstance) 

       var str = 属性1; 
..... 
}

去除了多次写对象名的麻烦。 


​ECMAScript 5 里已经不推荐使用 with 语句,一个主要原因是,它会产生莫名的副作用,比如:

var obj = { a: 3 };

with (obj) {
  a = 7;
  b = 5;
}

这里,我们创建了一个全局变量 b。但一般我们会认为 b 是 obj 对象的属性 – 可惜不是,我们确实创建了一个全局变量。

我们知道全局变量是魔鬼,尤其是莫名产生的全局变量。所以 ECMAScript 5 里引入 "use strict";,解决这类问题。

如果我们在代码前加入 "use strict";:

"use strict";
var obj = { a: 3 };

with (obj) {
  b = 5;
}

运行后会报告这样的错误:

SyntaxError: strict mode code may not contain ‘with’ statements

严格模式下不允许使用 with。那就不用吧。

另一个不用 with 的原因是,它会拖慢代码的运行速度。通常,JavaScript 引擎会对要运行的 JavaScript 代码做许多优化,但 with(以及 eval)的引入会变成《海伯利安》这样的变数,导致引擎无法优化代码。
简单说,JavaScript 里不要用 with 了,现在,以后,都没什么必要。

本文来源:http://www.bbyears.com/jiaocheng/74601.html