JS中的call和apply淺顯的理解

  對這個知識點只有一個淺顯的認識,記錄一下,加深自己的印象!如有錯誤的地方,希望指正!

    call和apply用途: 1.傳遞參數  2 擴充函數的作用域

    格式:fn1.call(obj,num1,num2,num3...)   可以是一個值或者多個值

                fn2.apply(obj,[num1,num2,num3])  值應該放在數組當中,一個或者多個

    代碼:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script type="text/javascript">
          //全局變量,相當於window.names
          var names='zhang';

          //對象屬性名 
          var obj={names:'wang'};

          //函數名大寫相當於一個對象,函數本身也是一個對象;
          function Object(names){
            this.names=names;
           }
          var a=new Object('sun');

            //這個函數將會綁定不同對象
           function showName(){
                console.log(this.names);
            }
            /*******************************call使用*********************************************/

            //返回全局的作用域
           showName();//zhang
           //返回obj的作用域
           showName.call(obj);//wang
           //返回函數(對象)的作用域
           showName.call(a,'sun');//sun
           /*通過上面的小例子可以知道,call綁定在哪個對象上面就可以使用當前的作用域*/
         /*******************************call使用*********************************************/
         /*******************************apply使用*********************************************/
           //apply()幾乎一樣,只是傳遞參數的格式不一樣
           showName();//zhang
           showName.apply(obj);//wang
           showName.apply(a,['sun']);//sun  必須放在數組當中,一個或者多個
         /*******************************apply使用*********************************************/
        </script>
    </body>
</html>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章