有时候,我在一个程序代码中,多次需要使用某对象的属性或方法,通常的写法, 就是通过对象.属性
或者对象.方法
这样的方式来分别获得该对象的属性和方法, 如果在一块儿代码中频繁的这样使用,着实有点麻烦,with
语句就是要简化这种情形。
with (object) {
var x = 属性1;
var y = 属性1 + 属性2;
}
with
语句去除了多次写对象名的麻烦,通常用来缩短特定情形下必须写的代码量。
示例:
var person = {
name : "Kent Beck",
age : 56,
gender : "male",
address : "美国俄勒冈州科瓦利斯市"
}
with (person) {
console.log("姓名:" + name + ",年龄:" + age + ",性别:" + gender + ",地址:" + address);
}
with
语句也可以嵌套使用,即with
语句里还可以有with
语句。
示例:
var person = {
name : "Kent Beck",
age : 56,
gender : "male",
address : "美国俄勒冈州科瓦利斯市"
}
with(document) {
with (person) {
writeln("姓名:" + name);
writeln("年龄:" + age);
writeln("性别:" + gender);
writeln("地址:" + address);
}
}
with
语句类似于Java中的静态导入功能,这个功能让程序员写代码容易了,但是滥用的话,会导致可读性降低。with
语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。 要给对象创建新的属性,必须明确地引用该对象。with
语句的确可以减少代码量,但是会使ECMAScript
的执行时间增加许多。 因为它会去检查大括号内的每个变量是否是这个对象的属性或者方法。要不要使用with
语句, 首先要评估一下with
语句所在的代码块是不是会被频繁的调用,如果只是偶尔调用一次,大可放心使用。 如果频繁的调用的话,就不要使用with
语句了。