js中的with语句

  javascript中的with语句是什么?

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

  

  看起来不懂吗?

 

<!DOCTYPE html>
<html>
<head>
    <title>with语句</title>
</head>
<body>

<div id="div0" onclick="a = 1">div</div>
<script>
    var eDiv = document.getElementById("div0");
    eDiv.a = 0;
    //因为eDiv下没有b这个属性, 所以b的值变成了window下的属性, 这个没有问题
    with(eDiv) {
        b = 0;
    };

    var obj = {
        c : 2
    };
    //因为obj下有c属性, 当我们设置值的时候, c会变成设置obj的c属性;
    with(obj){
        console.log(c);
        c = 0;
    };
    //输出 obj =  { c : 0 }
    console.log(obj);
</script>

</body>
</html>

 

 

  好吧, 我懂了,但是这个with有毛用呢(要特别注意with语句的花括号里面的语句跟this不一样的)?

  

<!DOCTYPE html>
<html>
<head>
    <title>with语句</title>
</head>
<body>

<script>
    window.l = function(){console.log( arguments[0] )};
    with(location) {
        l(hostname);
        l(href)
    };

</script>
</body>
</html>

 

  呵呵 ,好像就是少写几个代码的意思么么哒;

  (少年, 你好像知道的太多了哦);

 

 

  说这个有毛用啊, 有没有干货,你这个搞毛的干活, 浪费我的时间呢, 混蛋。

  

<!DOCTYPE html>
<html>
<head>
    <title>with语句</title>
</head>
<body>

<input id="ipt0" value="111" onclick="console.log(value+attributes.hehe.value)" hehe="aiyobucuoo" />
<!--输出了 ==>> 111aiyobucuoo  --> 卧槽,这个是怎么回事, 没有用到this为什么可以把value直接输出出来啦;
</body>
</html>

  js内部对写在行内的onclick处理成了

  function(){

    with(document){

      with(this){

        //代码;

      }

    }

  }

  情不自禁的感叹,  又长见识了

  然后呢?

<!DOCTYPE html>
<html>
<head>
    <title>with语句</title>
</head>
<body>
<script>
    document.c = "dasb";
</script>
<form>
    <input value="1" type="text" name="xx" />
    <input value="2" type="text" name="age"/>
    <!---这里扩展了自己的作用域
        form的作用域
        以及documen的作用域
    ---->
    点击弹出clickMe12dasb
    <input type="button" value="clickMe" onclick="alert(value+age.value+xx.value+c)" />
</form>

<script>
    /*form扩展的作用域的方式可以看成是;
    with(document){
        with(this.form){
            with(this){

            }
        }
    }
    */
</script>
</body>
</html>

 

  懂了没:略懂略懂....

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。