Javascript中的with
来源:互联网 发布:免费地方门户源码 编辑:程序博客网 时间:2024/05/22 04:24
with
with会暂时修改作用域链。
<script>function a(){ with (b) { ... }}
a();</script>
函数a在定义的时候,就确定了a的作用域链,我们姑且认为这条链的最顶端是全局对象window。
当函数a被执行的时候,javascript引擎生成了一个call object并将其添加到作用域链尾部上(window对象之后),语句运行到with(b)时,将b添加到作用域链的尾部,所以with之内的变量查找,就会优先从这条链的b上查找---> 然后从a的call object中查找---> 最后查找window。with内的语句执行完之后,作用域链恢复原状(b被移出作用域链)。
以上就是例子代码运行时的微观世界。
with是不被推荐的,因为他操作作用域链,导致with语句之前的变量查找路径变长,执行效率低下。
有些人可能认为with能节省代码量,比如
with(document.forms[0]){ name.value=''; address.value=''; email.value='';}
就能少写不少document.forms[0],
其实定义一个局部变量取代with中的b也可以达到同样目的,效率也无损失。
var c=document.forms[0]; c.name.value=''; c.address.value=''; c.email.value='';
转自KennyMa的博客
原文链接:http://www.cnblogs.com/kaima/archive/2009/03/11/1408748.html
0 0
- Javascript 中的 with 用法
- javascript中的with
- Javascript中的with
- Javascript中的With语句
- javascript 中的with用法
- javascript中的with语句
- javaScript 中的 with 函数
- Javascript中的with
- Javascript中的with关键字
- Javascript中的with关键字
- javascript中的with关键字
- JavaScript中的with
- javascript中的with
- javascript中的with语句
- javascript中的with()方法
- 理解javascript中的with关键字
- JavaScript中的this、with的用法
- JavaScript中的this、with的用法
- IOS学习笔记-Protocol(协议-委托)
- jquery圆环
- li行间距大(IE中多了5个像素)的解决方法
- JavaScript中With 语句使用方法实例
- 以太网UDP最大报文长度
- Javascript中的with
- 计算机视觉、模式识别、机器学习常用牛人主页链接
- Xcode5制作Framework
- android中src和background区别
- HTML基础学习笔记
- 函数库的创建和动态链接库
- JS获取字符串长度(区分中英文)
- Gstreamer cheat sheet
- 2007 tju 2893. Decompression