zoukankan      html  css  js  c++  java
  • js之with

    网上找资料的时候看到有js代码里出现了大量的with语句,有点好奇,这里做下总结:

    1)简要说明  
           with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。 

       with语句的作用是暂时改变作用域链、减少的重复输入。 

    2)语法格式  
    with(object instance)  
    {  
            //代码块  

    有时候,我在一个程序代码中,多次需要使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现:  
    with(objInstance)  
    {  
           var str = 属性1;  
    .....  
    } 去除了多次写对象名的麻烦

    3)举例

    带有with的js代码

    1 with(document.forms[0]){  
    2        name.value = "lee king";  
    3        address.value = "Peking";  
    4        zipcode.value = "10000";  
    5 } 

    与之对应的传统的js写法

    document.forms[0].name.value = "lee king";  
    document.forms[0].address.value = "Peking";  
    document.forms[0].zipcode.value = "10000"; 

    可以看出with语句的简洁明了,不过在代码的世界里是很难找到真正的完美。

    s的解释器需要检查with块中的变量是否属于with包含的对象,这将使with语句执行速度大大下降,并且导致js语句很难被优化。为了兼顾速度与代码量可以找到一个比较折衷的方案:

    js代码:

    var  form = document.forms[0];  
    form.name.value = "lee king";  
    form.address.value = "Peking";  
    form.zipcode.value = "10000";

    所以在以后的高效代码开发中我们应该尽可能的避免使用with语句。

  • 相关阅读:
    Golang 学习入坑(三)Go语言变量及常量及运算符
    Golang 学习入坑(二)Go语言结构及基本语法及基本类型
    docker 理解和一些应用
    golang学习入坑(一)Go介绍及环境搭建
    VMware安装Centos7超详细程
    2020-05-28 postgresql sequence
    2020-05-18 缓存穿透、缓存击穿、缓存雪崩
    2020-05-15 rocketmq-spring-starter支持多集群
    2020-05-15 rocketmq-spring-starter结合disconf使用
    2020-05-14 RSA加解密
  • 原文地址:https://www.cnblogs.com/zhangruiping/p/4504038.html
Copyright © 2011-2022 走看看