龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

javascript中with的用法与介绍

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
本文章来详细的介绍了一下关于在javascript中 with用法以及with是否是在javascript中为只读哦下面大家可看实例。 先来看看with的基本用法 with (object) statements 参数 object 新的默认对象。 stat
本文章来详细的介绍了一下关于在javascript中 with用法以及with是否是在javascript中为只读哦下面大家可看实例。

先来看看with的基本用法

with (object)
   statements
参数
object
新的默认对象。
statements
一个或多个语句,object 是该语句的默认对象。
说明
with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:

 代码如下
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10)
y = Math.tan(14 * Math.E)

当使用 with 语句时,代码变得更短且更易读:

 代码如下

with (Math){
   x = cos(3 * PI) + sin (LN10) 
   y = tan(14 * E)
}


我们来分析with是否只能是只读呢


执行流进入下列任何一个语句时,作用域链将得到延长:


* 1) try-catch语句的catch块
* 2) with语句

此两个语句会在作用域链的前端添加一个变量对象。对with来说,其变量对象中包含着指定对象的所有属性和方法所作的变量申明;对catch来说,其变量对象中包含的是被抛出的错误对象的申明。这些标量对象都是只读的,因此在with和catch语句中申明的变量都会被添加到所在执行环境的变量对象中。
这是《JavaScript 高级程序设计第二版》中说明的一句话。可是,with延伸的作用域,标量对象真的是只读的吗?还是我理解的这个标量的意义不对?
不瞎说了,把自己的测试代码发一下就可:

 代码如下

//会跳转
(function(){
    with(location){
        href='http://www.111cn.net';
    }
})();


// b
(function(){
    var obj = {a:'a'};

    with(obj){
        a = 'b';
    }

    alert(obj.a);
})();

好了大家可以测试一下看看怎么样。


精彩图集

赞助商链接