with(){}是个很强大的功能。关于with。它可以修改作用域链,把它接受到的对象放在作用域的最顶端。进行代码执行。
作用:
修改作用域链。
var obj = {name : "wang"};
function test(){
var name = "zhou";
with(obj){
console.log(name);
}
}test();
//"wang"
with此时把obj放在函数的对顶端,相当于先执行obj里面的再执行function里面的。
那执行之后移除会不会还在作用域链的最顶端呢?
var obj = {name : "wang"};
function test(){
var name = "zhou";
with(obj){
console.log(name);
}
console.log(name);
}
test();
//
with经常运用在命名空间这部分上
var obj = {
dp1 : {
wang : {
name : "wang",
age : 20,
},
zhou : {
name : "zhou",
age : 19,
}
},
dp2 : {
chong : {
name : "chong",
age : 22,
},
},
}
with(obj.dp1.wang){
console.log(name);
console.log(age);
}
更快的访问其中的变量。
不好之处
with改变的作用域链,浏览器的js引擎在生成作用域链的时候会耗费很大时间。因此。多次使用with会使浏览器变慢。同时es5.0严格模式也不允许with的使用。
JavaScript语言我个人感觉是最有意思的了,我也是一个初学者,遇到问题,喜欢在博客上分享,也希望能帮到大家。
一个初学者,有什么不足或者纰漏的话,希望在下面评论出来,相互学习,共同进步。
--主页传送门--