六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 32|回复: 0

[转]javascript with延伸的作用域是只读的吗?

[复制链接]

升级  11.33%

64

主题

64

主题

64

主题

举人

Rank: 3Rank: 3

积分
234
 楼主| 发表于 2013-1-29 09:37:12 | 显示全部楼层 |阅读模式
 
当执行流进入下列任何一个语句时,作用域链将得到延长:
    * 1) try-catch语句的catch块
    * 2) with语句
此两个语句会在作用域链的前端添加一个变量对象。对with来说,其变量对象中包含着指定对象的所有属性和方法所作的变量申明;对catch来说,其变量对象中包含的是被抛出的错误对象的申明。这些标量对象都是只读的,因此在with和catch语句中申明的变量都会被添加到所在执行环境的变量对象中。
这是《JavaScript 高级程序设计第二版》中说明的一句话。可是,with延伸的作用域,标量对象真的是只读的吗?还是我理解的这个标量的意义不对?
不瞎说了,把自己的测试代码发一下就可:
<div style="overflow: auto; white-space: nowrap; width: 600px;" class="codecolorer-container javascript dawn"><div class="javascript codecolorer">//会跳转
(function(){
    with(location){
        href='http://www.360.cn';
    }
})();


// b
(function(){
    var obj = {a:'a'};

    with(obj){
        a = 'b';
    }

    alert(obj.a);
})();
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表