with

有时候,我在一个程序代码中,多次需要使用某对象的属性或方法,通常的写法, 就是通过对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法, 如果在一块儿代码中频繁的这样使用,着实有点麻烦,with语句就是要简化这种情形。

1.1、with语句格式
with (object) {
    var x = 属性1;
    var y = 属性1 + 属性2;
}

with语句去除了多次写对象名的麻烦,通常用来缩短特定情形下必须写的代码量。

1.2、使用方式一

示例:

var person = {
    name : "Kent Beck",
    age : 56,
    gender : "male",
    address : "美国俄勒冈州科瓦利斯市"
}

with (person) {
    console.log("姓名:" + name + ",年龄:" + age + ",性别:" + gender + ",地址:" + address);
}
1.3、使用方式二

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);
    }
}
1.4、注意事项
  • with语句类似于Java中的静态导入功能,这个功能让程序员写代码容易了,但是滥用的话,会导致可读性降低。
  • with语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。 要给对象创建新的属性,必须明确地引用该对象。
  • with语句的确可以减少代码量,但是会使ECMAScript的执行时间增加许多。 因为它会去检查大括号内的每个变量是否是这个对象的属性或者方法。要不要使用with语句, 首先要评估一下with语句所在的代码块是不是会被频繁的调用,如果只是偶尔调用一次,大可放心使用。 如果频繁的调用的话,就不要使用with语句了。