日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

this关键字

發布時間:2023/12/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 this关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

總結

以上是生活随笔為你收集整理的this关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。