javascript之with

语法:

with(object){

        statements

        }

为一组语句创建缺省的对象。在这一组语句中,任何不指定对象的属性引用都将被认为是缺省对象的

参数:

         object   语句指定要使用的缺省对象。

         statements  任意语句块。

示例
下面的语句指定了 Math 对象作为缺省对象。在 with 语句里引用的 PI 属性、cos 和 sin 方法就没有指定对象,JavaScript 会假定这些引用都是针对 Math 对象的。
var a, x, y
var r=10
with (Math) {
   a = PI * r * r
   x = r * cos(PI)
   y = r * sin(PI/2)
}

在使用with时要注意的地方:

with内部遇到某一方法或变量时,为了确定其具体内容。首先去在指定对象的属性里去寻找,然后才会找局部变量,最后是全局变量。因此,这里有可能潜伏着危机。例如:

<body>
<ul id="ul"></ul>
<script type="text/javascript" src="app/youtube/script/jquery.min.js"></script>
<script type="text/javascript">
var config = [
              {name:"music",text:"Music"},
              {name:"shows",text:"Shows"},
              {name:"movies",text:"Movies"}
              ];
for(arrayIndex in config){
    var index = parseInt(arrayIndex);
    var item = config[index];
    var ul = $("#ul");
    with(ul){
    	//通常使用with时,是为了简洁的需要,会有较多的代码,这里只有一个append操作
    	append($("<li>",{
    		id:index,
    		name:item.name,
    		text:item.text
    	}));
    alert(index);
    }
   }
</script>
</body>
在上面的代码中,本意是设置每个新添加的li元素的id属性为当前循环的索引,其取值为第一行红字中的index。但是,当脚本在解释with内部的index时,会首先从指定的对象ul(with指定的对象)中寻找index属性。而在jquery对象prototype中恰好有这样一个属性index(Function)。所以,其真正的赋值反而不是我们期望的那样。在alert(index)时,就明显的看到,弹出内容是一个函数体,而不是数字 0,1,2...,因此,在使用with时,需格外谨慎。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值