JavaScript中this物件原理簡潔說明
今天看了阮一峰大神的部落格文章:JavaScript 的this原理,把糾結很久的this的指向終於理解清楚了
原文:http://www.ruanyifeng.com/blog/2018/06/javascript-this.html
現在來說說如何區分不同情況下的this物件指向,如下所示:
var obj = { num: 12, foo: function() { console.log(this.num) } } var num = 2; var fun = obj.foo; obj.foo(); // 12 fun(); // 2
obj.foo() 即為呼叫obj物件下的foo屬性對應的方法,但是執行環境還是在物件obj中,故此時的this指向obj物件,故輸出為12;
對於 var fun = obj.foo(),相當於是將obj物件下的foo函式在記憶體中的地址賦值給了變數fun,而變數fun卻是一個全域性變數,所以fun() 的執行環境其實是在window物件下,fun()執行起來後其下的函式foo裡的this指向window物件,故此時輸出為2;
這是我看了大神部落格後的理解加總結,如果有什麼不對的地方,希望指正。
相關推薦
JavaScript中this物件原理簡潔說明
今天看了阮一峰大神的部落格文章:JavaScript 的this原理,把糾結很久的this的指向終於理解清楚了 原文:http://www.ruanyifeng.com/blog/2018/06/javascript-this.html 現在來說說如何區分不同情況下的this物件指向,如下所示:
JavaScript 中 this 的原理
一、問題 學習 JavaScript 其中一個標誌就是理解下面兩種寫法,會輸出有不一樣的結果。 var obj = { foo: function () {} }; var foo = obj.foo; // 寫法一 obj.foo() // 寫法二 foo() 在上面的程式碼中,雖
JavaScript中this物件的繫結
呼叫一個函式將暫停當前函式的執行,傳遞控制權和引數給新函式。除了宣告時定義的形式引數,每個函式接受兩個附加的引數:this和arguments 。引數 this 在面向物件程式設計中非常重要,它的值取決於呼叫的模式。在JavaScript中一共有四種呼叫模式:方法呼叫模式、函式呼叫模式、構造器呼叫模
JavaScript中this關鍵字原理
先來看一個例子: var obj = { foo: function () { console.log(this.bar) }, bar: 1 }; var foo = obj.foo; var bar = 2; obj.foo() // 1 foo() // 2 造成這種差
詳解javascript中this的工作原理
new 變量 person get 工作 func 存在 嚴格 es5 在 JavaScript 中 this 常常指向方法調用的對象,但有些時候並不是這樣的,本文將詳細解讀在不同的情況下 this 的指向。 一、指向 window: 在全局中使用 this,它將會指向全局
JavaScript中判斷物件是否屬於Array型別的4種方法及其背後的原理與侷限性
## 前言 毫無疑問,Array.isArray是現如今JavaScript中判斷物件是否屬於Array型別的首選,但是我認為了解本文其餘的方法及其背後的原理與侷限性也是很有必要的,因為在JavaScript中的大多數引用型別並沒有像Array型別一樣提供一個isArray的判斷方法,此時使用其餘的方法舉一
JavaScript中this的用法
屬於 指向 cti 用法 func 生成 純粹 ava 構造函數 this的使用環境有以下幾種 1、純粹的函數調用 純粹的函數調用屬於函數的最常用的用法,屬於全局性調用。在全局函數中,this等於window。 2、作為對象方法的調用 當函數不是全局調用,而是作為某個對象
JavaScript中this關鍵字的指向問題
asc 函數調用 javascrip new spa con oba cti func 1、純粹的函數調用,this就代表全局對象Global var x = 1; function test(){ var x = ‘二哈‘; console.log(th
javascript中this的指向
span this 有時 變量 mage bsp 匿名函數 javascrip 生成 作為一個前端小白在開發中對於this的指向問題有時候總是會模糊,於是花時間研究了一番。 首先this是JS的關鍵字,this是js函數在運行是生成的一個內部對象,生成的這個this只能在函
對於JavaScript中this關鍵字的理解
決定 博客 rip script 答案 搜索 http 環境 return 這是我第二遍學this了,第一遍學的懵懵的。this指哪裏都是憑我一個男人的直覺然後控制臺輸出看看對不對。 剛查了書、博客、視頻。理解差不多了。畢竟菜雞me; 一、首先介紹下什麽是this
Javascript中 this的精要總結
實例 ref 今天 方法 自動 console 網上 這樣的 理解 對於javascript中this的指向問題,或許你和我一樣,總是很迷惑,今天通過學習了有些作者對這方面比較深刻的理解後,抄錄其中比較有用的精髓如下: 本文主要引用至:追夢子,如有需要可以導向去閱讀。 關鍵
淺析JavaScript中this儲存
循環 變量名 當前 each ava var rip div 習慣 this是Javascript語言的一個關鍵字。它代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。 在JavaScript中,this代表的是當前對象。 在寫原型鏈時,經常需要將this進行儲
JavaScript 中 this 是如何工作的 ?
全局 val fst 如何使用 stephen 如何 系列 操作 link 先來看看這個題目: var x = 0; var foo = { x:1, bar:{ x:2, baz: function () { consol
第149天:javascript中this的指向詳解
doc ava 常見 每一個 document () 學習 知識 對象 js中的this指向十分重要,了解js中this指向是每一個學習js的人必學的知識點,今天沒事,正好總結了js中this的常見用法,喜歡的可以看看: 1、全局作用域或者普通函數中this指向全局對象wi
圖說js中的this——深入理解javascript中this指針
前端 javascript this沒搞錯吧!js寫了那麽多年,this還是會搞錯!沒搞錯,javascript就是回搞錯!…………在寫java的時候,this用錯了,idea都會直接報錯!比如……但是,js,……idea,愛莫能助了……在面向對象編程裏有兩個重要的概念:一個是類,一個是實例化的對象,類是一個
JavaScript中this的一些坑
opener PE 說明 立即執行 記得 noop cti 變化 也有 我們經常在回調函數裏面會遇到一些坑: var obj = { name: ‘qiutc‘, foo: function() { console.log(this); }, foo
JavaScript 中 this的指向
UNC lar -c when ack regular poi ole die this 一方面便利了讓大家在JS開發當, 但是另一方面讓開發者頭痛的是不清楚this 指代什麽. 指向全局Window: <script> console.log(th
JavaScript中this指標指向的徹底理解
現在我們就來總結一下js中this的指向。首先需要了解一下幾個概念: 1、全域性變數預設掛載在window物件下 2、一般情況下this指向它的呼叫者 3、es6的箭頭函式中,this指向建立者,並非呼叫者 4、通過call、apply、bind可以改改變this的指向 在非箭頭函式下, this
javascript中this指向的理解(轉載)
JS中的this指向一直是個讓人頭疼的問題,想當初我學的是天昏地暗,查了好多資料,看的頭都大了,跟他大戰了那麼多回合,終於把它搞定個七八分,其實往往都是我們複雜化了,現在就讓大家輕鬆看懂this的指向,我會分以下幾種情況來說。 this的指向: &nb
JavaScript中this關鍵字
JavaScript中this關鍵字用法較為靈活,用處較多,主要有以下幾種方式: 1.瀏覽器中,全域性的this指向window; console.log(this===window); console.log(this); this.a='nice'; console