JS基础--with改变作用域
2017-03-08 17:04
666 查看
with通常被当做重复引用同一对象中的多个属性的快捷方式。可以不需要重复引用对象本身。
一个例子引发的思考:
function foo(obj){
with(obj){
a=2;
}
}
var o1=
{a:2}
var o2={b:3}
foo(o1);
console.log(o1.a)//2
foo(02);
console.log(o2.a)//undefined
console.log(a)//2我们可以注意到一个奇怪的副作用,a=2赋值操作实际上创建了一个全局变量a,
with可以将一个没有或有多个属性的对象处理为一个完全隔离的词法作用域,因此这个对象的属性也会被处理为定义在这个作用域中的标识符。
尽管with块可以将一个对象处理为词法作用域,但是这个块内部正常的var声明并不会被限制在这个块的作用域当中,而是被添加到with所处的函数作用域。
一个例子引发的思考:
function foo(obj){
with(obj){
a=2;
}
}
var o1=
{a:2}
var o2={b:3}
foo(o1);
console.log(o1.a)//2
foo(02);
console.log(o2.a)//undefined
console.log(a)//2我们可以注意到一个奇怪的副作用,a=2赋值操作实际上创建了一个全局变量a,
with可以将一个没有或有多个属性的对象处理为一个完全隔离的词法作用域,因此这个对象的属性也会被处理为定义在这个作用域中的标识符。
尽管with块可以将一个对象处理为词法作用域,但是这个块内部正常的var声明并不会被限制在这个块的作用域当中,而是被添加到with所处的函数作用域。
相关文章推荐
- 保存的js无法执行的解决办法[原创]_基础知识_脚本之家
- js脚本学习 比较实用的基础
- js基础
- WEB程序员学习JS快速指南--基础一
- Javascript入门学习第一篇 js基础第1/2页
- {js}JavaScript中支持面向对象的基础
- 超级实用且不花哨的js代码大全 (基础)
- js字符串基础:IndexOf(),LastIndexOf(),substring()
- JS基础知识
- js脚本学习 比较实用的基础
- js小技巧 转 js基础嘘唏
- JavaScript基础之引用外部JS文件
- js基础到精通全面教程--JS教程
- js浏览图片(ajax基础)
- js不是基础的基础
- js基础学习,小技巧
- 基础的prototype.js常用函数及其用法
- 后缀就扩展名为js的文件是什么文件[原创]_基础知识_脚本之家
- Javascript入门学习第一篇 js基础第1/2页
- jQuery基础教程笔记适合js新手第1/2页