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