转载:http://www.2cto.com/kf/201408/329846.html
1初次接触到with用法,是这样一段代码:
function validate_email(field,alerttxt) { with (field) { apos=value.indexOf(@); dotpos=value.lastIndexOf(.); if (apos<1||dotpos-apos<2) {
alert(alerttxt);
return false;
} else {
return true
} } }
with对象能够使我们很方便的使用某个对象的一些属性,而不用每次都去写
作用:用于设置代码在特定对象中的作用域。
对象名.属性 的形式,直接使用对象名。
就像上面的代码,field是对象,而value是对象的值。若不是有with,我们应该是field.value的形式来使用属性。使用with去除了多次写
with对象只能使用属性,而不能改变属性。
这里有个很简单的例子:
function Lakers() { this.name = kobe bryant; this.age = 28; this.gender = boy; } <span style="font-family:">//使用函数容器创建对象</span>
var people=new Lakers(); with(people) { var str = 姓名: + name ; str += 年龄: + age ; str += 性别: + gender; document.write(str); }
这样使用,会得到结果:
姓名: kobe bryant
年龄:28
性别:boy
2 with方式也可以用来进行样式的赋值。
js进行样式的赋值方法大家可以参考http://blog.sina.com.cn/s/blog_6cbbde3f01018g6z.html
其中一种方法是:cssText方法,
var t=document.getElementById(dd); t.style.cssText=width:200px;height:300px;
还可以
with(t.style){ width='300px'; height='300px'; }
补充:
说到作用域链,不得不说with语句。with语句主要用来临时扩展作用域链,将语句中的对象添加到作用域的头部。
看下面代码
person={name:"yhb",age:22,height:175,wife:{name:"lwy",age:21}}; with(person.wife){ console.log(name); }
with语句将person.wife添加到当前作用域链的头部,所以输出的就是:“lwy".
with语句结束后,作用域链恢复正常。