+ -
当前位置:首页 → 问答吧 → js with中的this

js with中的this

时间:2011-10-24

来源:互联网

网上查到很多说在with中使用this,this指代with中的对象,实际检验出来this还是指代原来的对象。

那with,this有什么说法没??

有没有大牛来说下。

作者: jieai618   发布时间: 2011-10-24

with 语句用于设置代码在特定对象中的作用域。

它的语法:

with (expression) statement例如:

var sMessage = "hello";
with(sMessage) {
  alert(toUpperCase()); //输出 "HELLO"
}
在这个例子中,with 语句用于字符串,所以在调用 toUpperCase() 方法时,解释程序将检查该方法是否是本地函数。如果不是,它将检查伪对象 sMessage,看它是否为该对象的方法。然后,alert 输出 "HELLO",因为解释程序找到了字符串 "hello" 的 toUpperCase() 方法。

提示:with 语句是运行缓慢的代码块,尤其是在已设置了属性值时。大多数情况下,如果可能,最好避免使用它。

作者: lijpwsw   发布时间: 2011-10-24

这个解释不够详细吗?

作者: lijpwsw   发布时间: 2011-10-24

说法就是极度不推荐with因为他会让你代码变慢而且代码乱糟糟不知道变量哪来的

作者: kyzy_yy_pm   发布时间: 2011-10-24

没必要纠结with..因为这种方式是任何时候都不推荐使用的

作者: liangws   发布时间: 2011-10-24

JScript code

var s = {
    a:1
};
var n = new Date().getTime();
for(var i=0;i<10000;i++)s.a++;
document.write(new Date().getTime()-n+'<br>');

with(s){
    var n = new Date().getTime();
    for(var i=0;i<10000;i++)a++;
    document.write(new Date().getTime()-n+'<br>');
}


性能上,ie8下都一样,但是chrome下我这里测试的是:用with会比没用with的句子慢10倍
至于with的内部实现和官方解释没见过,不误导群众。。

作者: Crazywa   发布时间: 2011-10-24

别没事使用with表达式 当中的this指代可以被更改的 不安全~~~

作者: fanchuanzhidu   发布时间: 2011-10-24