A-A+

javascript中with的用法与介绍

2016年01月14日 前端设计 暂无评论 阅读 5 views 次

本文章来详细的介绍了一下关于在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 语句时,代码变得更短且更易读,代码如下:

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

我们来分析with是否只能是只读呢,执行流进入下列任何一个语句时,作用域链将得到延长:

* 1) try-catch语句的catch块

* 2) with语句

此两个语句会在作用域链的前端添加一个变量对象,对with来说,其变量对象中包含着指定对象的所有属性和方法所作的变量申明,对catch来说,其变量对象中包含的是被抛出的错误对象的申明,这些标量对象都是只读的,因此在with和catch语句中申明的变量都会被添加到所在执行环境的变量对象中.

这是《JavaScript 高级程序设计第二版》中说明的一句话。可是,with延伸的作用域,标量对象真的是只读的吗?还是我理解的这个标量的意义不对?不瞎说了,把自己的测试代码发一下就可,代码如下:

  1. //会跳转  
  2. (function(){  
  3.     with(location){  
  4.         href='http://www.xiariboke.net';  
  5.     }  
  6. })();  
  7.   
  8. // b  
  9. (function(){  
  10.     var obj = {a:'a'};  
  11.     with(obj){  
  12.         a = 'b';  
  13.     }  
  14.     alert(obj.a);  
  15. })();  

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

标签:

给我留言