關於javascript中的this
剛剛讀完《你不知道的javascript》(上卷),自我感覺良好,昨天在node社群上看到一個關於js的this的問題,就想著測試以下自己,悲劇的是沒做出來。 今天看了下之前的總結,分析了下問題,在這裡寫下分析過程,也算是一種鞏固知識的措施。 問題:
var length = 10;
function fn() {
console.log(this.length)
};
var obj = {
length: 5,
method: function (a) {
a();
console.log(arguments[0]);
arguments[0]();
a.call(obj, 12);
}
};
obj.method(fn, 1, 2);
分析思路: 首先,通過obj.method進行方法呼叫,此時應用的是this的隱式繫結規則,method方法中的this會指向obj,接下來執行隱式賦值,將全域性函式fn傳入了method中,此時會產生this丟失,進而應用this的預設繫結規則,將this指向全域性,所以第一個a()函式執行的結果是10
然後是arguments0的方式繼續呼叫fn,由於arguments[0]是引用的arguments物件中的fn,所以此時的this指向的是arguments物件,所以返回的this是3
最後是呼叫的call方法,所以應用的是this的顯式繫結,將fn中的this繫結到了obj這個物件,所以是5
相關文章
- 關於JavaScript中arguments的用法JavaScript
- 【JavaScript】聊聊js中關於this的指向JavaScriptJS
- 關於Javascript中的valueOf與toStringJavaScript
- 關於JavaScript中this的軟繫結JavaScript
- 關於Javascript中的”use strict”的那些事JavaScript
- 關於javascript中變數及函式的提升JavaScript變數函式
- 關於Javascript的des加密JavaScript加密
- 關於dom(javascript)JavaScript
- 關於javascript的this指向問題JavaScript
- 關於JavaScript跨域的若干想法JavaScript跨域
- 關於javascript原型鏈的記錄JavaScript原型
- 關於 JavaScript 中的特殊函式,你應該這樣看JavaScript函式
- 分享關於JavaScript中執行上下文(this)的使用心得JavaScript
- 關於JavaScript變數提升JavaScript變數
- javascript關於toFixed的計算規則JavaScript
- 關於JavaScript的記憶體機制JavaScript記憶體
- JavaScript 中那些關於座標和距離的屬性與方法JavaScript
- 完全理解JavaScript中的this關鍵字JavaScript
- 關於JavaScript中this的指向,你知曉幾分?請速來圍觀!JavaScript
- 基於JavaScript的關鍵詞過濾示例JavaScript
- 關於 JavaScript 字串的一個小知識JavaScript字串
- 關於oracle中的undoOracle
- 關於 Angular 中的 AuthGuardAngular
- 關於Spring中的useSuffixPatternMatchSpring
- 關於 iOS 中的庫iOS
- 關於javascript的Object. hasOwnProperty,看我就夠了JavaScriptObject
- JavaScript關於陣列的一些方法整理JavaScript陣列
- 關於JavaScript原型物件那些事兒JavaScript原型物件
- 理解JavaScript中BOM和DOM的關係JavaScript
- 關於事件物件中的stopImmediatePropagation事件物件
- 關於http包中的handlerHTTP
- vue中 關於$emit的用法VueMIT
- 關於Java中的equals方法Java
- css中關於table的相關設定CSS
- 【譯】關於JavaScript 陣列你應該知道的事情JavaScript陣列
- 在2018年裡關於測試JavaScript的回顧JavaScript
- JavaScript tips —— 關於下載與匯出的二三事JavaScript
- 揭祕JavaScript中“神祕”的this關鍵字JavaScript
- Javascript中的關鍵字'this'學習筆記JavaScript筆記