摘要:關鍵字關鍵字是什么關鍵字是中最復雜的機制之一。它是一個很特別的關鍵字,被定義在所有函數的作用域中。可以把這條規則看作是無法應用其他規則時的默認規則。取決于函數調用的位置注意事項避免多層避免數組方法中的避免回調函數中的
this關鍵字 this關鍵字是什么
this關鍵字是JavaScript中最復雜的機制之一。它是一個很特別的關鍵字,被定義在所有函數的作用域中。但是即使是非常有經驗的JavaScript開發者也很難說清它到底指向什么。
1.this被定義在所有函數的作用域中
2.this指向哪個對象不取決于this被定義在哪里,而是取決于調用的位置
//定義一個全局變量 var v = 10; //this經常被定義在函數的作用域中 function fn(){ //this 總是要返回一個對象 console .log(this . v); } fn();綁定規則 默認綁定
在一個函數體中使用this,當該函數被獨立調用。可以把這條規則看作是無法應用其他規則時的默認規則。
function foo(){ console .log(this .a); } var a=2; foo();//2隱式綁定
隱式綁定的規則需要考慮的是調用位置是否有上下文對象,或者說是否被某個對象擁有或者包含。
function foo(){ console .log(this.a); } var obj = { a:2, foo:foo }; obj.foo();//2隱式綁定丟失
隱式綁定丟失是最常見的this綁定問題,指的就是被隱式綁定的函數會丟失綁定對象,也就是說它會應用默認綁定,從而把this綁定到全局對象。
// 定義一個全局變量 var v = 100; // 定義一個函數 function fn(){ console.log(this.v); } // 定義一個對象 var obj = { v : 200, f : fn // 對象的f()方法指向fn()函數 } // 定義一個全局變量,并被賦值為對象obj的f()方法 var fun = obj.f; // 將fun作為一個函數進行調用 fun();顯示綁定
顯示綁定就是明確在調用時,this所綁定的對象。JavaScript中提供了apply()方法和call()方法實現,這兩個方法的第一個參數接收是一個對象,會把這個對象綁定到this,接著在調用函數時指定這個this
// 定義一個全局變量 var v = 100; // 定義一個函數 function fn(){ console.log(this.v); } // 定義一個對象 var obj = { v : 200, f : fn // 對象的f()方法指向fn()函數 } // 定義一個全局變量,并被賦值為對象obj的f()方法 var fun = obj.f; // 將fun作為一個函數進行調用 fun.apply(obj);new綁定
1.創建(或者說構造)一個全新的對象
2.這個新對象會綁定到函數調用的this
3.如果函數沒有返回其他對象,那么new表達式中的函數調用會自動返回這個新對象。
function Hero(name){ this.name = name; } // this取決于函數調用的位置 var hero1 = new Hero("hhh"); var hero2 = new Hero("xxx");注意事項
1.避免多層this
2.避免數組方法中的this
3.避免回調函數中的this
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96986.html
摘要:出于這個原因,該函數返回的,所以在這里指的是,所以返回的是第一個說明關鍵字通常在對象的構造函數中使用,用來引用對象。重寫無法重寫,因為它是一個關鍵字。結論,表示當前的上下文對象是一個對象,可以調用對象所擁有的屬性,方法。 在《javaScript語言精粹》這本書中,把 this 出現的場景分為四類,簡單的說就是: 有對象就指向調用對象 沒調用對象就指向全局對象 用new構造就指向新對...
摘要:原文鏈接參考深入理解原型和閉包完結王福朋博客園中的作用域詳解博客園 前言 王福朋老師的 JavaScript原型和閉包系列 文章看了不下三遍了,最為一個初學者,每次看的時候都會有一種 大徹大悟 的感覺,而看完之后卻總是一臉懵逼。原型與閉包 可以說是 JavaScirpt 中理解起來最難的部分了,當然,我也只是了解到了一些皮毛,對于 JavaScript OOP 更是缺乏經驗。這里我想總...
摘要:首先,必須搞清楚在里面,函數的幾種調用方式普通函數調用作為方法來調用作為構造函數來調用使用方法來調用方法箭頭函數但是不管函數是按哪種方法來調用的,請記住一點誰調用這個函數或方法關鍵字就指向誰。 本文主要解釋在JS里面this關鍵字的指向問題(在瀏覽器環境下)。 首先,必須搞清楚在JS里面,函數的幾種調用方式: 普通函數調用 作為方法來調用 作為構造函數來調用 使用apply/call...
在JavaScript中‘this’關鍵字是一個非常重要的概念,我們雖然知道它重要,但它也十分的晦澀難懂,也給我們學習造成不小的困擾。 什么是'this'關鍵字 'this'關鍵字是為每個執行上下文(每個函數)創建的一個特殊變量;所以一般來說,在使用'this'關鍵字的函數中,'this'永遠是取其所有者的值。總結一句話是該函...
閱讀 2272·2021-11-16 11:51
閱讀 3501·2021-09-26 10:14
閱讀 1789·2021-09-22 15:58
閱讀 1094·2019-08-30 15:52
閱讀 2012·2019-08-30 15:43
閱讀 2612·2019-08-30 13:46
閱讀 907·2019-08-30 13:10
閱讀 1020·2019-08-29 18:32