成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

js中函數(shù)arguments和this的案例分析-創(chuàng)新互聯(lián)

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

專注于為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)龍海免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
一 arguments

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

二 this

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

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

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

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

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

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

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

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

四 函數(shù)的兩種調(diào)用方法
  1. beauty.run(); 會(huì)自動(dòng)把beauty傳到函數(shù)里面作為this
  2. run.call(anything);需要自己手動(dòng)的將anything傳到函數(shù)里面作為this
五 關(guān)于this的知識(shí)點(diǎn)(假設(shè)fn是一個(gè)普通函數(shù),arrow是一個(gè)箭頭函數(shù))

1、在new fn()調(diào)用的時(shí)候,fn里的this指向新生成的對象,這是new決定的
2、在fn()調(diào)用中,this默認(rèn)指向window,這是瀏覽器決定的
3、在obj.fn()調(diào)用中,this默認(rèn)指向obj,這是js的隱式傳this
4、在fn.call(xxx)調(diào)用中,this就是xxx,這是開發(fā)者通過call顯示指定的this
5、在arrow()的調(diào)用中,arrow里面的this就是arrow外面的this,因?yàn)榧^函數(shù)里面沒有自己的this
6、在arrow.call(xxx)調(diào)用中,arrow里面的this還是arrow外面的this,因?yàn)榧^函數(shù)里面沒有自己的this

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享js中函數(shù)arguments和this的案例分析內(nèi)容對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!

分享名稱:js中函數(shù)arguments和this的案例分析-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://jinyejixie.com/article12/diphgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷品牌網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、Google、網(wǎng)站設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
镇沅| 莫力| 鄂温| 鄂托克前旗| 漯河市| 望都县| 永兴县| 安多县| 满洲里市| 马鞍山市| 南丹县| 舞阳县| 隆回县| 如皋市| 南丹县| 新昌县| 恩平市| 峡江县| 锡林浩特市| 土默特右旗| 若尔盖县| 平远县| 密山市| 太谷县| 黄平县| 大城县| 遵义市| 安达市| 临武县| 河西区| 社旗县| 岢岚县| 白朗县| 时尚| 肥城市| 西藏| 聊城市| 临澧县| 宁强县| 密云县| 花莲市|