摘要:情況如果一個(gè)函數(shù)中有,這個(gè)函數(shù)有被上一級(jí)的對(duì)象所調(diào)用,那么指向的就是上一級(jí)的對(duì)象。
函數(shù)中 this -->普通函數(shù)中this 不是看它定義時(shí)候所處的對(duì)象 誰調(diào)用它this就是誰
普通函數(shù)中 this 是什么?
任何函數(shù)本質(zhì)上都是通過某個(gè)對(duì)象來調(diào)用的,如果沒有直接指定就是window
所有函數(shù)內(nèi)部都有一個(gè)變量this
它的值是調(diào)用函數(shù)的當(dāng)前對(duì)象
如何確定this的值?
test(): window
p.test(): p
new test(): 新創(chuàng)建的對(duì)象(準(zhǔn)確說不是p 但p最后是指向這個(gè)對(duì)象的) var p = new test()
p.call(obj): obj
//
情況1:如果一個(gè)函數(shù)中有this,但是它沒有被上一級(jí)的對(duì)象所調(diào)用,那么this指向的就是window, 這里需要說明的是在js的嚴(yán)格版中this指向的不是window,但是我們這里不探討嚴(yán)格版的問題,你想了解可以自行上網(wǎng)查找。
情況2:如果一個(gè)函數(shù)中有this,這個(gè)函數(shù)有被上一級(jí)的對(duì)象所調(diào)用,那么this指向的就是上一級(jí)的對(duì)象。
情況3:如果一個(gè)函數(shù)中有this,這個(gè)函數(shù)中包含多個(gè)對(duì)象,盡管這個(gè)函數(shù)是被最外層的對(duì)象所調(diào)用,this指向的也只是它上一級(jí)的對(duì)象
var o = {
a:10, b:{ // a:12, fn:function(){ console.log(this.a); //undefined } }
}
o.b.fn();
盡管對(duì)象b中沒有屬性a,這個(gè)this指向的也是對(duì)象b,因?yàn)閠his只會(huì)指向它的上一級(jí)對(duì)象,不管這個(gè)對(duì)象中有沒有this要的東西。
//
var o = {
a:10, b:{ a:12, fn:function(){ console.log(this.a); //undefined console.log(this); //window } }
}
var j = o.b.fn;
j();
**this永遠(yuǎn)指向的是最后調(diào)用它的對(duì)象,也就是看它執(zhí)行的時(shí)候是誰調(diào)用的,例子中雖然函數(shù)fn是被對(duì)象b所引用,
但是在將fn賦值給變量j的時(shí)候并沒有執(zhí)行所以最終指向的是window**
箭頭函數(shù)的特點(diǎn):
1、簡潔 2、箭頭函數(shù)沒有自己的this,箭頭函數(shù)的this不是調(diào)用的時(shí)候決定的,而是在定義的時(shí)候處在的對(duì)象就是它的this
3、擴(kuò)展理解: 箭頭函數(shù)的this看外層的是否有函數(shù),
如果有,外層函數(shù)的this就是內(nèi)部箭頭函數(shù)的this,( 如果它的外層也是箭頭函數(shù),則繼續(xù)向外找) 如果沒有,則this是window。
作用: 定義匿名函數(shù)
基本語法:
沒有參數(shù): () => console.log("xxxx")
一個(gè)參數(shù): i => i+2
大于一個(gè)參數(shù): (i,j) => i+j
函數(shù)體不用大括號(hào): 默認(rèn)返回結(jié)果
函數(shù)體如果有多個(gè)語句, 需要用{}包圍,若有需要返回的內(nèi)容,需要手動(dòng)返回
使用場景: 多用來定義回調(diào)函數(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/101579.html
摘要:類型聲明中的函數(shù)定義,需要聲明參數(shù)和返回值的類型。其中隱藏有一個(gè)點(diǎn)類型推斷,箭頭函數(shù)沒有聲明返回值類型,這里編譯器不會(huì)報(bào)錯(cuò),因?yàn)樗梢酝茢喑龇祷刂殿愋汀? 引言 TypeScript中的函數(shù)和JavaScript中的函數(shù),和其他特性相比,是相差不大的。 這里會(huì)補(bǔ)充一點(diǎn)進(jìn)階知識(shí)。 函數(shù)相關(guān)的知識(shí)點(diǎn) 下面列舉一些TypeScript中函數(shù)相關(guān)的知識(shí)點(diǎn)。 類型聲明 TypeScript中的函...
摘要:例如通過,調(diào)用時(shí)強(qiáng)制把它的綁定到上。箭頭函數(shù)問題箭頭函數(shù)體內(nèi)的對(duì)象就是定義時(shí)所在的對(duì)象,而不是使用時(shí)所在的對(duì)象,固定不變。 剛?cè)腴Tjavascript,關(guān)于this的學(xué)習(xí),花了自己挺多的時(shí)間,做了比較多的功課,看了一篇又一篇的文章,也看了一些書籍,今天就結(jié)合看的那些東西總結(jié)下自己所學(xué)到的東西,方便留著以后回看,進(jìn)一步的學(xué)習(xí),這篇文章會(huì)不斷的更新,不斷的更新自己的想法,現(xiàn)在還是一個(gè)入門不...
摘要:感覺對(duì)我這種沒實(shí)習(xí)沒工作的新手,雖然一些高級(jí)的功能暫時(shí)用不上,但是一些基礎(chǔ)的知識(shí)還是為平時(shí)的開發(fā)提供了巨大的便利。學(xué)習(xí)告一段落,現(xiàn)在結(jié)合平時(shí)的開發(fā),總結(jié)一些常用的知識(shí)。日常開發(fā)中,塊級(jí)作用域中使用的變量,盡量使用或者聲明。使用時(shí),進(jìn)行合并。 很早之前就學(xué)過TypeScript和ES6,后來做項(xiàng)目的時(shí)候零零散散用了些。這幾天又系統(tǒng)地把ES6的知識(shí)看了一遍。感覺對(duì)我這種沒實(shí)習(xí)沒工作的新手,...
摘要:箭頭函數(shù)我們來看一下箭頭函數(shù)的效果箭頭函數(shù)是無法通過來修改作用域的這個(gè)需要切記。所以切記在需要的時(shí)候使用箭頭函數(shù)。 這是一些小問題的記錄和總結(jié): 1. vue serve和build 在vue-cli3.0中可以快速的開發(fā)原型。通過全局安全@vue/cli-service-global npm i -g @vue/cli-service-global 那么就可以使用vue serve ...
摘要:的精髓在于,用維護(hù)狀態(tài)傳遞狀態(tài)的方式使得回調(diào)函數(shù)能夠及時(shí)調(diào)用,比傳遞要簡單靈活的其他方法用于指定發(fā)生錯(cuò)誤時(shí)的回調(diào)函數(shù),等同于部分和的區(qū)別在發(fā)生異常,在中捕獲不到能夠捕獲異常。 ES6是個(gè)啥 ECMAScript是國際通過的標(biāo)準(zhǔn)化腳本語言JavaScript由ES,BOM,DOM組成ES是JavaScript的語言規(guī)范,同時(shí)JavaScript是ES的實(shí)現(xiàn)和擴(kuò)展6就是JavaScript...
閱讀 797·2021-11-25 09:43
閱讀 3063·2021-11-24 10:20
閱讀 1170·2021-10-27 14:18
閱讀 1163·2021-09-08 09:36
閱讀 3494·2021-07-29 14:49
閱讀 1880·2019-08-30 14:07
閱讀 3026·2019-08-29 16:52
閱讀 3144·2019-08-29 13:12