摘要:中是在運行的時候進行綁定的,這是中關鍵字具備多重含義的本質原因。所以,中的可以是全局對象當前對象或者是任意對象。
Js中this是在運行的時候進行綁定的,這是Js中this關鍵字具備多重含義的本質原因。所以,Js中的this可以是全局對象、當前對象或者是任意對象。這完全取決于函數的調用方式,而js中函數的調用有以下幾種方式:
作為對象方法調用
作為函數調用
作為構造函數調用
使用apply或call調用
根據以下判斷,判別this分別指向什么:
1.函數調用是用new進行調用的嗎?如果是,則this指向新創建的對象,否則進行下一步判斷
2.判斷該函數是否是用dot(.)進行調用的,如果是的話,那么this指向dot(.)之前的對象;否則this指向全局對象window.
四種調用方式中this的指向
函數調用模式中this指全局對象(window)
var f1 = function() { alert("這個是函數調用"); alert(this);//window }; f1();
方法調用
由對象調用方法(當對象為null的時候,函數進行函數調用模式,當對象不為null的時候,函數實現方法調用模式)
在方法調用模式中 this 表示當前對象
var o = {name:"小明"}; o.say = function() { alert(this.name);//小明 alert(this);//o }; o.say();
任何一個函數放在new 后面就是構造函數,構造函數的this是構造函數返回的對象,構造函數的return發生變化,如果返回的是對象,直接返回,否則返回創建出來的對象
如
var Person = function(n) { this.name = n; return { name:"男", get:function(){ console.log(this.name); }; // return 123; } var p = new Person();
函數的apply調用模式和call調用模式
語法:
函數名.apply(對象, [參數數組]);
函數名.call(對象, 參數列表);
如
var func = function() { this.name = "小明"; this.say = function(){alert(this.name + "學習好");}; }; func.apply(null); // 等價于 func();
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93606.html
摘要:在全局對象中調用,自然讀取的是全局對象的值構造器調用說明作為構造器調用時,指向返回的這個對象。最直觀的表現就是,去看一些優秀框架的源代碼時,不再是被繞的暈乎乎的。 學習起因: 在之前的JavaScript學習中,this,call,apply總是讓我感到迷惑,但是他們的運用又非常的廣泛。遂專門花了一天,來弄懂JavaScript的this,call,apply。中途參考的書籍也很多,以...
摘要:一等公民對象函數在提指向問題之前,肯定是有必要說明一等公民對象,既然是對象,那么就能像普通的值一樣傳遞。在普通瀏覽器中指向的是在中指向的是全局對象全局環境中或者模塊環境中。即指向或者的第一個參數。第二條規則,指向的不是原文鏈接 1. 一等公民對象——函數 在提this指向問題之前,肯定是有必要說明一等公民對象function ,既然function是對象,那么就能像普通的值一樣傳遞。嗯...
摘要:出現箭頭函數的時候,指向為定義時的上下文對象而非指向時,并且不能被改變首先我們先看一個例子由上面的例子我們可以看出來此時指針在用改變了之后指向的依然是全局對象非嚴格瀏覽器環境中是而非。 javascript基礎之this指針 越往后面學越發現基礎的重要性,所以打算重新過一遍基礎,之后出幾個vue和react的實戰教程。ok,嚴歸正傳。 首先什么是this this是執行上下文創建時確定...
摘要:再來看一個小的示例淘寶騰訊淘寶為什么輸出的依然是淘寶呢調用的是對象中的方法,方法里面有一個定時器,而定時器的一個參數是這里的指的就是的對象,然后方法里面有調用了,但是定時器中的指的是對象,所以最終調用的是對象中。 1.看前熱身 看一段代碼 var name = javascript; var obj = { name:js, foo:f...
摘要:第四點也要著重講下,記住構造函數被操作,要讓正常作用最好不能在構造函數里 4) this、new、call和apply的相關問題 講解this指針的原理是個很復雜的問題,如果我們從javascript里this的實現機制來說明this,很多朋友可能會越來越糊涂,因此本篇打算換一個思路從應用的角度來講解this指針,從這個角度理解this指針更加有現實意義。 下面我們看看在ja...
摘要:也就是說當返回的函數作為構造函數的時候,時指定的值會失效,但傳入的參數依然生效。構造函數效果的優化實現但是在這個寫法中,我們直接將,我們直接修改的時候,也會直接修改函數的。 JavaScript深入系列第十一篇,通過bind函數的模擬實現,帶大家真正了解bind的特性 bind 一句話介紹 bind: bind() 方法會創建一個新函數。當這個新函數被調用時,bind() 的第一個參數...
閱讀 749·2021-10-14 09:43
閱讀 2072·2021-09-30 09:48
閱讀 3440·2021-09-08 09:45
閱讀 1090·2021-09-02 15:41
閱讀 1878·2021-08-26 14:15
閱讀 770·2021-08-03 14:04
閱讀 2972·2019-08-30 15:56
閱讀 3072·2019-08-30 15:52