91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js中函數arguments和this的案例分析

發布時間:2020-09-22 09:09:45 來源:億速云 閱讀:168 作者:小新 欄目:web開發

這篇文章主要介紹了js中函數arguments和this的案例分析,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

一 arguments

1、除了箭頭函數,每個函數都有arguments
2、arguments是偽數組,沒有數組的共有屬性(push...)的數組就是偽數組,arguments的原型是Object.prototype

二 this

1、除了箭頭函數,每個函數都有this
2、為什么要使用this?
如果沒有this,有的代碼就很難寫,比如一個函數想要獲取對象的引用

    //構造對象
    let beauty={       name:'美女',
       run(){          console.log(`看`+person.name+`在跑步`);
       }
    }    
    //使用類構造對象
    class Person{       constructor(name){          this.name=name;//這里的this是new強制指定的
       }
       run(){          console.log(`看`+xxx.name+`在跑步`);
       }
    }復制代碼

3、假設沒有this如果直接構造對象,也還好,我們可以使用保存了對象地址的變量獲取對象的name屬性(即引用),但是如果beauty改名,run函數無法使用。
如果使用,還沒有創建對象,故不可能使用對象的引用,那么如何拿到對象的name屬性?

4、因此需要一種辦法拿到對象,這樣才能獲取對象的屬性
(1) 怎么在還沒有定義對象,還不知道對象名字的時候,拿到對象的引用呢? 有一種土方法,那就是在定義每個函數的時候,給他寫一個參數,默認這個參數指的是以后定義的新對象,到時候調用的時候,把新對象傳給他,python就是用的這種方法

   class Person{         constructor(name){            this.name=name;//這里的this是new強制指定的
         }
         run(self){            console.log(`看`+self.name+`在跑步`);
         }
      }    //這樣每個參數接收一個額外的self,這個self指未來定義的新對象
    let beauty=new Person('美女');
    beauty.run(beauty);    //這樣寫了兩個beauty,有點丑
    //在python中直接寫beauty.run()等價于寫beauty.run(beauty);復制代碼

(2) js是怎么解決這個問題的呢?js在每個函數中添加了this

    let beauty={           name:'美女',
           run(){              console.log(`看`+this.name+`在跑步`);
           }
    }    //beauty.run()相當于beauty.run(beauty)
    //beauty.run()會將beauty隱式地傳給run,run可以通過this引用beauty
    //可以理解為js引擎隱式地幫你做了this=beauty這件事
    //這樣每個函數都能通過this隱式的獲取一個未知對象的引用了復制代碼
三 總結

我們想讓函數獲取對象的引用,但是并不想通過變量名做到,python通過額外的self參數做到,js通過額外的this做到,也就是this就是最終調用函數的對象

四 函數的兩種調用方法
  1. beauty.run(); 會自動把beauty傳到函數里面作為this
  2. run.call(anything);需要自己手動的將anything傳到函數里面作為this
五 關于this的知識點(假設fn是一個普通函數,arrow是一個箭頭函數)

1、在new fn()調用的時候,fn里的this指向新生成的對象,這是new決定的
2、在fn()調用中,this默認指向window,這是瀏覽器決定的
3、在obj.fn()調用中,this默認指向obj,這是js的隱式傳this
4、在fn.call(xxx)調用中,this就是xxx,這是開發者通過call顯示指定的this
5、在arrow()的調用中,arrow里面的this就是arrow外面的this,因為箭頭函數里面沒有自己的this
6、在arrow.call(xxx)調用中,arrow里面的this還是arrow外面的this,因為箭頭函數里面沒有自己的this

感謝你能夠認真閱讀完這篇文章,希望小編分享js中函數arguments和this的案例分析內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

朝阳市| 揭西县| 日喀则市| 稷山县| 河北区| 渭源县| 三原县| 新郑市| 渑池县| 武夷山市| 青州市| 五常市| 祥云县| 徐汇区| 德令哈市| 垫江县| 镇坪县| 科技| 朝阳市| 广东省| 察雅县| 海原县| 丰台区| 建昌县| 磐石市| 呼和浩特市| 和顺县| 阿克苏市| 江达县| 老河口市| 盱眙县| 石林| 安阳县| 公主岭市| 格尔木市| 荆门市| 康保县| 蕲春县| 宁晋县| 淅川县| 廊坊市|