对象
1.with 语句
with
语句的作用是操作一个对象的一个或多个属性时,提供一个方便书写的方式。
语法格式:
with (object) {
语句;
}
用法:
let obj = {
m1:'a',
m2:'b'
}
with (obj) {
m1 = 'x';
m2 = 'y';
}
console.log(obj.m1); //x
console.log(obj.m2); //y
等同于:
let obj = {
m1:'a',
m2:'b'
};
obj.m1 = 'x';
obj.m2 = 'y';
console.log(obj.m1); //x
console.log(obj.m2); //y
需要注意的是,如果 with
代码块里赋值的变量在传入的对象里面不存在,则会创建一个当前作用域的全局变量。
let obj = {}
with (obj) {
m1 = 'x';
}
console.log(obj.m1); //undefined
console.log(m1); //x
with
区块是不改变作用域的,这造成了 with
语句绑定对象的不确定性,很不利于 debug
和 代码模块化,对于编译器来说,也不利于它对这段代码优化处理,只能在运行时作判断,严重拖慢了运行速度。故此,建议不要轻易使用 with
语句。