with的用法以及在命名空间上的用法和简化对象document.的用法

  <script>
 
 var obj={
   name:"obj"
 }
 var name='window';
 var age=18
 function test(){
   var name='scope';
   with(obj){
     var age=17
     //with可以改变作用域链,它能让作用域链的最顶端变成with括号里面的对象 找它的AO
     console.log(name);//打印的是obj的name
     console.log(age);//obj里没有age
   }
 }
 test()
  </script>

在命名空间上的用法

<script>
 
   var obj={
     dp1:{
       a:{
         name:"aaa"
       },
       b:{
         name:"bbb"
       }
     },
     dp2:{
       c:{
         name:"cccc"
       }
     }
   }
   with(obj.dp1.a){
     console.log(name);
   }
   with(obj.dp2.c){
     console.log(name);
   }

  </script>

简化document.用法
比如我们在用document.write的时候,写代码很麻烦,也可使用with

 <script>
  var a=10
   with(document){
     write(a)
   }

  </script>

缺点,with改的是作用域链,系统内核消耗效率去改变作用域链,效率很低,所以es5严格模式不准使用with

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值