摘要:的關(guān)鍵字總是讓人捉摸不透,關(guān)鍵字代表函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用,因為函數(shù)的調(diào)用場景不同,的指向也不同。其實只要理解語言的特性就很好理解。個人對中的關(guān)鍵字的理解如上,如有不正,望指正,謝謝。
javascript的this關(guān)鍵字總是讓人捉摸不透,this關(guān)鍵字代表函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用,因為函數(shù)的調(diào)用場景不同,this的指向也不同。其實只要理解javascript語言的特性就很好理解this。在javascript中,函數(shù)可以直接調(diào)用:
function range(){ this.min = 5; } range() console.info(min) ==> 5
這里函數(shù)range是在全局中運行的,所以this指向全局對象,在瀏覽器中全局對象是window。函數(shù)也可以作為對象的方法調(diào)用,如下:
var range = { setmin : function(){ this.min = 5; } } range.setmin(); console.log(min); ==> undefined console.log(range.min) ==> 5
當作為對象方法調(diào)用時,this指向的是調(diào)用對象,而不是全局對象。
當函數(shù)作為構(gòu)造函數(shù)時,和作為對象方法一樣,this指向調(diào)用函數(shù)的對象。不重復贅述,還有javascript還提供apply和call方法來改變this綁定的對象。這里不詳細討論,你們可以自行百度一下apply和call方法是怎么改變this綁定對象的 。我們最后討論討論當this關(guān)鍵字在閉包中時的情況,下面的this在閉包中:
var range = { setrange : function(){ this.min = 5; var setmax = function(){ this.max = 100; }; setmax(); } }; range.setrange(); console.log(range.min); ==> 5 console.log(range.max); ==> undefined console.log(max); ==> 100
這里max應(yīng)該是作為range的屬性,可實際上確是全局的,this指向了全局對象,按道理講this.max的this應(yīng)該綁定到外層函數(shù)的調(diào)用對象上,實際上綁定到了全局,是不是很神奇,這應(yīng)該是javascript的一個設(shè)計缺陷。
個人對javascript中的this關(guān)鍵字的理解如上,如有不正,望指正,謝謝。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/86438.html
摘要:匿名函數(shù)的執(zhí)行環(huán)境具有全局性,因此它的對象通常指向。如果對此有疑惑,可以看知乎上的答案知乎匿名函數(shù)的指向為什么是作為對象方法的調(diào)用,指向該對象當函數(shù)作為某個對象的方法調(diào)用時,就指這個函數(shù)所在的對象。 因為日常工作中經(jīng)常使用到this,而且在JavaScript中this的指向問題也很容易讓人混淆一部分知識。 這段時間翻閱了一些書籍也查閱了網(wǎng)上一些資料然后結(jié)合自己的經(jīng)驗,為了能讓自...
摘要:回調(diào)函數(shù)在回調(diào)函數(shù)中的指向也會發(fā)生變化。在閉包回調(diào)函數(shù)賦值等場景下我們都可以利用來改變的指向,以達到我們的預期。文章參考系列文章理解閉包理解執(zhí)行棧理解作用域理解數(shù)據(jù)類型與變量原文發(fā)布在我的公眾號,點擊查看。 這是本系列的第 5 篇文章。 還記得上一篇文章中的閉包嗎?點擊查看文章 理解 JavaScript 閉包 。 在聊 this 之前,先來復習一下閉包: var name = Nei...
摘要:第四點也要著重講下,記住構(gòu)造函數(shù)被操作,要讓正常作用最好不能在構(gòu)造函數(shù)里 4) this、new、call和apply的相關(guān)問題 講解this指針的原理是個很復雜的問題,如果我們從javascript里this的實現(xiàn)機制來說明this,很多朋友可能會越來越糊涂,因此本篇打算換一個思路從應(yīng)用的角度來講解this指針,從這個角度理解this指針更加有現(xiàn)實意義。 下面我們看看在ja...
摘要:使用來調(diào)用函數(shù),會自動執(zhí)行下面操作創(chuàng)建一個全新的對象。所以如果是一個函數(shù)的話,會是這樣子的創(chuàng)建一個新對象連接新對象與函數(shù)的原型執(zhí)行函數(shù),改變指向新的對象所以,在使用來調(diào)用函數(shù)時候,我們會構(gòu)造一個新對象并把它綁定到函數(shù)調(diào)用中的上。 歡迎來我的博客閱讀:《加深對 JavaScript This 的理解》 我相信你已經(jīng)看過很多關(guān)于 JavaScript 的 this 的談?wù)摿?,既然你點進來...
摘要:理解文章中已經(jīng)比較全面的分析了在中的指向問題,用一句話來總結(jié)就是的指向一定是在執(zhí)行時決定的,指向被調(diào)用函數(shù)的對象。與和直接執(zhí)行原函數(shù)不同的是,返回的是一個新函數(shù)。這個新函數(shù)包裹了原函數(shù),并且綁定了的指向為傳入的。 理解 JavaScript this 文章中已經(jīng)比較全面的分析了 this 在 JavaScript 中的指向問題,用一句話來總結(jié)就是:this 的指向一定是在執(zhí)行時決定的,...
閱讀 773·2023-04-25 19:53
閱讀 4409·2021-09-22 15:13
閱讀 2635·2019-08-30 10:56
閱讀 1383·2019-08-29 16:27
閱讀 3019·2019-08-29 14:00
閱讀 2491·2019-08-26 13:56
閱讀 621·2019-08-26 13:29
閱讀 1684·2019-08-26 11:31