javascript的with表示什么?

javascript的with表示什么?
2025-01-18 21:01:41
推荐回答(3个)
回答1:

  with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。

  with(object instance)

  {

  //代码块

  }

  有时候,在一个程序代码中,多次需要使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现:

  with(objInstance)

  {

  var str = 属性1;

  .....

  } 去除了多次写对象名的麻烦。

  举例:


  代码执行效果如下:

  姓名: kobe bryant

  年龄:28

  性别:boy

回答2:

with 可以给with的大括号内部的代码提供一个上下文,比如代码

with(obj) {

// 代码

}

当这段代码引用一个变量的时候,先在obj的成员里面找,如果找不到,则认为是外部变量,比如函数的局部变量,全局变量等等。当obj很长的时候,这样写可以省去一些麻烦,比如这样:

obj1.obj2.obj3.obj4.obj5.method1();

obj1.obj2.obj3.obj4.obj5.method2();

obj1.obj2.obj3.obj4.obj5.method3();

obj1.obj2.obj3.obj4.obj5.method4();


我要调用这个嵌套很深的obj5的四个方法,我就得这么写,看起来很麻烦,那么with就可以这么写了

with(obj1.obj2.obj3.obj4.obj5) {

method1();

method2();

method3();

method4();

}

省了点事情。

但是,下面我要说但是了,with是一把双刃剑,尽量别用。或者说,绝对不要用,理由如下

  1. JavaScript的严格模式不支持with。

  2. 容易引起歧义。还是上面的例子,如果method4这个函数在obj5中不存在,不用with的话,JS直接崩溃,容易查错,但是用了with,有可能一个外部的名为method4就被调用了,可能引起错误蔓延。

  3. 如果有上面的问题的话,object名字很长,可以用下面的方法代替:

    var tempObj = obj1.obj2.obj3.obj4.obj5;

    temoObj.method1();

    temoObj.method2();

    temoObj.method3();

    temoObj.method4();

回答3:

当你有一个对象的多个属性或者方法需要操作时,就可以使用with

比如

test