日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JavaScript中的this基本問題實例小結

瀏覽:199日期:2023-11-08 11:10:58

本文實例講述了JavaScript中的this基本問題.分享給大家供大家參考,具體如下:

在函數中 this 到底取何值,是在函數真正被調用執行的時候確定下來的,函數定義的時候確定不了。

執行上下文環境 :

**定義**:執行函數的時候,會產生一個上下文的對象,里面保存變量,函數聲明和this。

**作用**:用來保存本次運行時所需要的數據

當你在代碼中使用了 this,這個 this 的值就直接從執行的上下文中獲取了,而不會從作用域鏈中搜尋。

關于 this 的取值,大體上可以分為以下幾種情況:

情況一:全局 & 調用普通函數

在全局環境中,this 永遠指向 window。

console.log(this === window); //true

普通函數在調用時候(注意不是構造函數,前面不加 new),其中的 this 也是指向 window。

但是如果在嚴格模式下調用的話會報錯:

var x = 1;function first(){ console.log(this); // undefined console.log(this.x); // Uncaught TypeError: Cannot read property ’x’ of undefined}first();

情況二:構造函數

所謂的構造函數就是由一個函數 new 出來的對象,一般構造函數的函數名首字母大寫,例如像 Object,Function,Array 這些都屬于構造函數。

function First(){ this.x = 1; console.log(this); //First {x:1}}var first = new First();console.log(first.x); //1

上述代碼,如果函數作為構造函數使用,那么其中的 this 就代表它即將 new 出來的對象。

但是如果直接調用 First函數,而不是 new First(),那就變成情況1,這時候 First() 就變成普通函數。

function First(){ this.x =1; console.log(this); //Window}var first = First();console.log(first.x); //undefined

情況三:對象方法

如果函數作為對象的方法時,方法中的 this 指向該對象。

var obj = { x: 1, first: function () { console.log(this); //Object console.log(this.x); //1 }};obj.first();

注意:若是在對象方法中定義函數,那么情況就不同了。

var obj = { x: 1, first: function () { function second(){ console.log(this); //Window console.log(this.x); //undefined } second(); }}obj.first();

可以這么理解:函數 second雖然是在 obj.first 內部定義的,但它仍然屬于一個普通函數,this 仍指向 window。

在這里,如果想要調用上層作用域中的變量 obj.x,可以使用 self 緩存外部 this 變量。

var obj = { x:1, first: function () { var self = this; function second(){ console.log(self); //{x: 1} console.log(self.x); //1 } second(); }}obj.first();

如果 first 函數不作為對象方法被調用:

var obj = { x: 1, first: function () { console.log(this); //Window console.log(this.x); //undefined }};var fn = obj.first;fn();

obj.first 被賦值給一個全局變量,并沒有作為 obj 的一個屬性被調用,那么此時 this 的值是 window。

情況四:構造函數 prototype 屬性

function First(){ this.x = 1;}First.prototype.getX = function () { console.log(this); //First {x: 1, getX: function} console.log(this.x); //1}var first= new First();first.getX();

在 First.prototype.getX 函數中,this 指向的first 對象。不僅僅如此,即便是在整個原型鏈中,this 代表的也是當前對象的值。

情況五:函數用 call

var obj = { x:1}function first(){ console.log(this); //{x: 1} console.log(this.x); //1}first.call(obj);

當一個函數被 call調用時,this 的值就取傳入的對象的值。

來源:知乎

鏈接:https://zhuanlan.zhihu.com/p/25294187?utm_source=com.youdao.note&utm_medium=social

感興趣的朋友可以使用在線HTML/CSS/JavaScript前端代碼調試運行工具:http://tools.jb51.net/code/WebCodeRun測試上述代碼運行效果。

更多關于JavaScript相關內容還可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产欧美亚洲精品a| 91欧美极品| 高清不卡一区| 精品午夜av| 久久av网站| 国产亚洲一区二区三区啪| 亚洲精品女人| 婷婷五月色综合香五月| 91欧美极品| 老司机精品在线| 不卡一二三区| 亚洲国产一区二区三区在线播放| 91精品啪在线观看国产18| 色综合www| 91精品国产福利在线观看麻豆| 欧美日一区二区| 在线亚洲精品| 日韩精品导航| 国产精品2023| 麻豆91精品视频| 精品国产亚洲一区二区在线观看| 国产一区二区亚洲| 999国产精品永久免费视频app| 国产字幕视频一区二区| 男人天堂欧美日韩| 色8久久久久| 欧美1区2区3| 婷婷综合六月| 综合国产精品| 精品视频97| 午夜国产欧美理论在线播放| 亚欧成人精品| 高清日韩中文字幕| 亚洲在线成人| 日本天堂一区| www在线观看黄色| 日韩视频一区二区三区在线播放免费观看| 在线看片日韩| 福利片在线一区二区| 亚洲激情偷拍| 国产精品乱战久久久| 日韩中文影院| 亚洲毛片在线| 久久久久久婷| 日韩制服丝袜先锋影音| 国产精品欧美一区二区三区不卡| 日韩专区精品| 日韩区欧美区| 日韩av福利| 鲁大师影院一区二区三区| 国产欧美高清视频在线| 久久国产电影| 国产亚洲高清在线观看| 麻豆精品蜜桃| 日本在线成人| 久久九九精品| 国产精品一站二站| 欧美在线资源| 国产一区二区三区不卡视频网站 | 日韩一区精品| 国产va免费精品观看精品视频| 午夜视频精品| 一级成人国产| 国产videos久久| 亚洲aⅴ网站| 久久久9色精品国产一区二区三区| 亚洲精品韩国| 国产91精品对白在线播放| 国产日韩一区二区三免费高清 | 日韩久久99| 99久久夜色精品国产亚洲狼 | 久久久久国产| 国产欧美日韩亚洲一区二区三区| 久久蜜桃av| 国产精品三级| 久久国产精品亚洲77777| 中文字幕在线免费观看视频| 日韩精品五月天| 午夜久久久久| 日韩电影免费网站| 国产精品s色| 蜜臀久久久99精品久久久久久| 日韩伦理在线一区| 久久av偷拍| 亚洲不卡视频| 亚洲欧洲一区二区天堂久久| 亚洲专区视频| 国产日韩一区二区三区在线 | 亚洲调教视频在线观看| 国产精品久久久久9999高清| 日韩中文字幕一区二区三区| 国产91精品对白在线播放| 国产精成人品2018| 亚洲精品高潮| 999国产精品| 97在线精品| 久久精品国产精品亚洲毛片| 婷婷精品在线| 亚洲一级在线| 欧美成人久久| 国产在线观看www| 久久久久久久久成人| 日韩成人精品一区二区三区| 视频在线观看一区二区三区| 欧美日韩国产在线观看网站 | 欧美专区18| 狠狠操综合网| 亚洲第一精品影视| 欧洲一区二区三区精品| 荡女精品导航| 精品伊人久久久| 久久99视频| 国产精品流白浆在线观看| 国产日韩免费| 国产伦精品一区二区三区在线播放 | 婷婷成人基地| 群体交乱之放荡娇妻一区二区| 国产精选在线| 伊人久久视频| 韩国精品主播一区二区在线观看| 国产精品国产一区| 麻豆mv在线观看| 日本欧美不卡| 久久精品高清| 1024精品久久久久久久久| 欧美在线观看视频一区| 激情久久婷婷| 夜夜精品视频| 亚洲免费成人av在线| 日本成人在线一区| 日韩激情中文字幕| 国产日韩精品视频一区二区三区| 国产乱人伦丫前精品视频| 97精品久久| 国产免费av国片精品草莓男男| 国产高清亚洲| 久久久男人天堂| 久久久久免费av| 在线亚洲欧美| 日本国产一区| 99视频精品| 91精品日本| 久久亚洲道色| 久久久777| 天使萌一区二区三区免费观看| 老司机精品久久| 91亚洲无吗| 国产aⅴ精品一区二区四区| 少妇久久久久| 99在线精品视频在线观看| 亚洲精品动态| 欧美精品91| 日韩av免费| 伊人精品久久| 国产精品啊v在线| 天堂а√在线最新版中文在线| 米奇777超碰欧美日韩亚洲| 中文字幕av亚洲精品一部二部| 国产一级成人av| av中文资源在线资源免费观看| 欧美aa一级| 久久福利一区| 免费一级欧美片在线观看网站| 亚洲欧洲美洲av| 国产精品腿扒开做爽爽爽挤奶网站| 日本午夜精品视频在线观看| 福利视频一区| 视频一区欧美日韩| 欧美成人精品午夜一区二区| 国产一区日韩一区| 日韩av中文在线观看| 红杏一区二区三区| 91精品1区| 国产精品毛片aⅴ一区二区三区| 日韩另类视频| 亚洲18在线| 国产高潮在线| 亚洲3区在线| 日韩专区精品| 欧美亚洲综合视频| 久久九九国产| 国产精品亚洲人成在99www| 久久影视一区| 欧美在线精品一区| 99久久精品国产亚洲精品| 91精品一区| 久久在线电影| 麻豆国产一区| 综合激情视频| 精精国产xxxx视频在线播放| 婷婷亚洲成人| 日韩一区电影| 激情久久五月| 国产精品多人| 国产高清亚洲| 蜜臀av免费一区二区三区| 久久91视频| 亚洲一区二区三区无吗| 日本精品在线中文字幕| 日韩午夜av|