久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      了解js中函數(shù)的arguments和this

      了解js中函數(shù)的arguments和this

      【相關(guān)學(xué)習(xí)推薦:javascript】

      一 arguments

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

      了解js中函數(shù)的arguments和this

      二 this

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

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

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

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

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

      (2) js是怎么解決這個(gè)問(wèn)題的呢?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可以通過(guò)this引用beauty     //可以理解為js引擎隱式地幫你做了this=beauty這件事     //這樣每個(gè)函數(shù)都能通過(guò)this隱式的獲取一個(gè)未知對(duì)象的引用了復(fù)制代碼

      三 總結(jié)

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

      四 函數(shù)的兩種調(diào)用方法

      1. beauty.run(); 會(huì)自動(dòng)把beauty傳到函數(shù)里面作為this
      2. run.call(anything);需要自己手動(dòng)的將anything傳到函數(shù)里面作為this
        了解js中函數(shù)的arguments和this

      五 關(guān)于this的知識(shí)點(diǎn)(假設(shè)fn是一個(gè)普通函數(shù),arrow是一個(gè)箭頭函數(shù))

      1、在new fn()調(diào)用的時(shí)候,fn里的this指向新生成的對(duì)象,這是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,這是開(kāi)發(fā)者通過(guò)call顯示指定的this
      5、在arrow()的調(diào)用中,arrow里面的this就是arrow外面的this,因?yàn)榧^函數(shù)里面沒(méi)有自己的this
      6、在arrow.call(xxx)調(diào)用中,arrow里面的this還是arrow外面的this,因?yàn)榧^函數(shù)里面沒(méi)有自己的this

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)