精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

七個關于"this"面試題,你能回答上來嗎?

開發 前端
在JavaScript中,this 表示函數調用上下文。this難點在于它有一個復雜的行為,這也是面試中經常被考的點。

[[386485]]

本文已經過原作者 Shadeed 授權翻譯。

在JavaScript中,this 表示函數調用上下文。this難點在于它有一個復雜的行為,這也是面試中經常被考的點。

本文列舉7個關于this有趣的面試問題:

  • 問題1:變量 vs 屬性
  • 問題2:Cat 的名字
  • 問題3:延遲打招呼
  • 問題4:人工方法
  • 問題5:問候和告別
  • 問題6:棘手的 length
  • 問題7:調用參數

問題1:變量 vs 屬性

下面的打印結果是啥:

  1. const object = { 
  2.   message: 'Hello, World!'
  3.  
  4.   getMessage() { 
  5.     const message = 'Hello, Earth!'
  6.     return this.message; 
  7.   } 
  8. }; 
  9.  
  10. console.log(object.getMessage()); // ?? 

答案:'Hello, World!'

object.getmessage()是一個方法調用,此時的 this 表示 object。

方法還有一個變量聲明const message = 'Hello, Earth!'。這個變量都不會影響this.message的值。

問題2:Cat 的名字

下面代碼打印什么:

  1. function Pet(name) { 
  2.   this.name = name
  3.  
  4.   this.getName = () => this.name
  5.  
  6. const cat = new Pet('Fluffy'); 
  7.  
  8. console.log(cat.getName()); // What is logged? 
  9.  
  10. const { getName } = cat; 
  11. console.log(getName());     // What is logged? 

答案:'Fluffy' 和 'Fluffy'

當函數作為構造函數new Pet('Fluffy')調用時,構造函數內部的this等于構造的對象

Pet構造函數中的this.name = name表達式在構造的對象上創建name屬性。

this.getName = () => this.name在構造的對象上創建方法getName。而且由于使用了箭頭函數,箭頭函數內部的this值等于外部作用域的this值, 即 Pet。

調用cat.getName()以及getName()會返回表達式this.name,其計算結果為'Fluffy'。

問題3:延遲打招呼

下面代碼打印什么:

  1. const object = { 
  2.   message: 'Hello, World!'
  3.  
  4.   logMessage() { 
  5.     console.log(this.message); // What is logged? 
  6.   } 
  7. }; 
  8.  
  9. setTimeout(object.logMessage, 1000); 

答案:1秒后,打印 undefined。

盡管setTimeout()函數使用object.logMessage作為回調,但仍將object.logMessage用作常規函數,而不是方法。

在常規函數調用期間,this等于全局對象,即瀏覽器環境中的 window。

這就是為什么logMessage方法中的 this.message等于 window.message,即undefined。

問題4:人工方法

如何調用logMessage函數,讓它打印 "Hello, World!" ?

  1.  message: 'Hello, World!' 
  2. }; 
  3.  
  4. function logMessage() { 
  5.   console.log(this.message); // "Hello, World!" 

答案:

至少有 3 種方式,可以做到:

  1.  message: 'Hello, World!' 
  2. }; 
  3.  
  4. function logMessage() { 
  5.   console.log(this.message); // logs 'Hello, World!' 
  6.  
  7. // Using func.call() method 
  8. logMessage.call(object); 
  9.  
  10. // Using func.apply() method 
  11. logMessage.apply(object); 
  12.  
  13. // Creating a bound function 
  14. const boundLogMessage = logMessage.bind(object); 
  15. boundLogMessage(); 

問題5:問候和告別

下面代碼打印什么:

  1. const object = { 
  2.   who: 'World'
  3.  
  4.   greet() { 
  5.     return `Hello, ${this.who}!`; 
  6.   }, 
  7.  
  8.   farewell: () => { 
  9.     return `Goodbye, ${this.who}!`; 
  10.   } 
  11. }; 
  12.  
  13. console.log(object.greet());    // What is logged? 
  14. console.log(object.farewell()); // What is logged? 

答案: 'Hello, World!' 和 'Goodbye, undefined!'。

當調用object.greet()時,在greet()方法內部,this值等于 object,因為greet是一個常規函數。因此object.greet()返回'Hello, World!'。

但是farewell()是一個箭頭函數,箭頭函數中的this值總是等于外部作用域中的this值。

farewell()的外部作用域是全局作用域,它是全局對象。因此object.farewell()實際上返回'Goodbye, ${window.who}!',它的結果為'Goodbye, undefined!'。

問題6:棘手的 length

下面代碼打印什么:

  1. var length = 4; 
  2. function callback() { 
  3.   console.log(this.length); // What is logged? 
  4.  
  5. const object = { 
  6.   length: 5, 
  7.   method(callback) { 
  8.     callback(); 
  9.   } 
  10. }; 
  11.  
  12. object.method(callback, 1, 2); 

答案: 4

callback()是在method()內部使用常規函數調用來調用的。由于在常規函數調用期間的this值等于全局對象,所以this.length結果為window.length。。

第一個語句var length = 4,處于最外層的作用域,在全局對象 window 上創建一個屬性length。

問題7:調用參數

下面代碼打印什么:

  1. var length = 4; 
  2. function callback() { 
  3.   console.log(this.length); // What is logged? 
  4.  
  5. const object = { 
  6.   length: 5, 
  7.   method() { 
  8.     arguments[0](); 
  9.   } 
  10. }; 
  11.  
  12. object.method(callback, 1, 2); 

答案: 3

obj.method(callback, 1, 2)被調用時有3個參數:callback, 1和2。結果,method()內部的參數特殊變量是如下結構的數組類對象:

  1.   0: callback, 
  2.   1: 1,  
  3.   2: 2,  
  4.   length: 3  

因為arguments[0]()是arguments對象上的回調的方法調用,所以回調內部的參數等于arguments。所以 callback()中的this.length與arguments.length相同,即3。

~ 完,我是小智,我們下期見!

作者:Shadeed 譯者:前端小智 來源:dmitripavlutin原文:https://dmitripavlutin.com/javascript-this-interview-questions/

 

責任編輯:姜華 來源: 大遷世界
相關推薦

2021-06-29 10:21:54

this面試前端

2025-01-09 12:00:00

JavaScript前端數組

2024-12-09 08:49:01

2021-03-04 09:35:54

thisJavaScript開發

2023-09-04 08:28:34

JavaScripforEach 循環

2019-11-26 10:30:11

CSS前端面試題

2023-11-15 07:54:03

HashMap數據結構

2014-12-02 10:02:30

2022-11-18 14:33:39

2021-03-01 09:39:34

閉包JavaScript開發

2023-11-10 08:44:13

分布式鎖分布式系統

2022-07-28 08:50:14

Linux系統

2012-03-30 10:03:27

HTML 5

2021-12-21 08:59:29

VueMVVM框架

2022-07-10 20:51:25

IT數字化K8S

2025-01-07 13:30:33

2022-03-21 14:09:19

面試C語言代碼

2012-03-30 09:45:07

WEBHTML5

2012-04-04 12:57:37

HTML5

2022-03-31 09:50:45

JS面試題
點贊
收藏

51CTO技術棧公眾號

欧美高清视频一区二区| 精品日韩在线观看| 三年中国中文在线观看免费播放| 一级黄色大毛片| 亚洲私拍自拍| 一本大道亚洲视频| 欧美性猛交乱大交| 捆绑调教日本一区二区三区| 国产日韩影视精品| 97se亚洲综合在线| 国产原创视频在线| 91精品秘密在线观看| 亚洲精品久久久久久久久久久久| 午夜免费高清视频| 色婷婷视频在线观看| 久久一区二区视频| 亚洲曰本av电影| 99久久久久久久久| 欧美日本一区| 中文字幕日韩精品在线| 99精品一区二区三区无码吞精| 极品美女一区| 亚洲一区二区影院| 天天爽天天狠久久久| 免费看av毛片| 国产在线不卡视频| 国产精品免费在线免费 | 欧美福利视频在线| 亚洲欧美va天堂人熟伦| 青青草这里只有精品| 欧美一区二区三区日韩视频| 久久久久久三级| 黑森林国产精品av| 亚洲自拍与偷拍| 一区二区三区日韩视频| 国产永久免费高清在线观看视频| 成人福利视频网站| 91亚洲国产成人精品性色| 天干夜夜爽爽日日日日| 一区二区日韩免费看| 另类图片亚洲另类| 亚洲AV成人无码网站天堂久久| 欧美人妖在线| 亚洲黄色www网站| 久久人妻少妇嫩草av蜜桃| 成人久久精品| 欧美日本在线看| 一区二区三区免费播放| 日本高清不卡一区二区三区视频 | 中文字幕+乱码+中文| 99精品欧美| 午夜免费日韩视频| 香蕉视频一区二区| 亚洲成人资源| 日韩精品成人一区二区在线| 黄色av网站在线播放| 欧美又粗又大又长| 免费毛片一区二区三区| 久久婷婷蜜乳一本欲蜜臀| 亚洲色图偷窥自拍| 极品人妻一区二区三区| 日本天堂一区| 亚洲欧美三级伦理| 在线免费看黄视频| 精品国产中文字幕第一页| 亚洲精品午夜精品| 制服 丝袜 综合 日韩 欧美| 欧美日本成人| 一区二区三区在线播放欧美| 国产一区二区三区四区五区六区| 欧美日韩国产一区二区三区不卡| 一区二区三区久久精品| 国产又粗又猛又爽又黄的视频小说| 精品国产一区二区三区噜噜噜| 中文字幕综合在线| 国产精品 欧美激情| 国产精品啊啊啊| 97在线视频一区| 国产一级免费视频| 久久国产精品无码网站| 91日本视频在线| 蜜臀av午夜精品| 久久伊99综合婷婷久久伊| 天堂av一区二区| av黄在线观看| 亚洲成人777| 国产免费又粗又猛又爽| 欧洲一区在线| 亚洲欧美日韩成人| 日本女人性生活视频| 欧美日本免费| 欧美最猛性xxxxx免费| 毛片在线免费播放| 国产成人精品三级| 免费国产一区| 韩国中文字幕在线| 欧美日韩视频在线| 一本色道久久亚洲综合精品蜜桃| 精品视频一区二区三区| 日韩精品在线看| 久久国产美女视频| 美女精品网站| 亚洲一区二区三区毛片| 深夜福利视频一区| 亚洲色图丝袜美腿| 欧洲av无码放荡人妇网站| 中文成人在线| 亚洲女人被黑人巨大进入al| 午夜爱爱毛片xxxx视频免费看| 亚洲综合日韩| 亚洲一区二区三区在线免费观看| 色久视频在线播放| 亚洲女女做受ⅹxx高潮| 亚洲中文字幕久久精品无码喷水| 在线成人免费| 亚洲天堂视频在线观看| 亚洲激情视频一区| 国产美女娇喘av呻吟久久| 欧美重口乱码一区二区| 大黄网站在线观看| 欧美一级在线视频| 日本黄色激情视频| 亚洲国内精品| 99久久99久久| 成人免费看片| 欧美久久久久免费| 四虎国产精品成人免费入口| 激情综合电影网| 99c视频在线| 欧美性天天影视| 在线亚洲一区二区| 少妇特黄一区二区三区| 一区在线视频观看| 91一区二区三区| 蜜桃视频在线观看免费视频网站www| 欧美日韩日本国产| 欧美丰满少妇人妻精品| 国精品一区二区三区| 91久久爱成人| 成人免费看片| 日韩一级片在线观看| 亚洲精品自拍视频在线观看| 日本aⅴ亚洲精品中文乱码| 欧美日韩一区在线观看视频| 正在播放日韩精品| 亚洲精品视频久久| 国产精品国产三级国产专区52| av一区二区不卡| 亚洲国产成人精品无码区99| 成人香蕉社区| 久久久亚洲国产天美传媒修理工| 亚洲av综合色区无码一区爱av| 亚洲欧洲综合另类| www.黄色网| 亚洲大胆视频| 国产区欧美区日韩区| a√中文在线观看| 日韩高清欧美高清| 超碰在线观看91| 国产人久久人人人人爽| 亚洲老女人av| 亚洲九九在线| 97人人模人人爽人人喊38tv| 亚洲精品一线| 亚洲国产中文字幕久久网 | 成人高清av| 国产在线视频一区| av电影免费在线观看| 精品国产一区二区三区久久久蜜月| 久热精品在线观看| 97精品电影院| 午夜视频你懂的| 无码一区二区三区视频| 99r国产精品视频| av最新在线| 国产亚洲欧美一区| 国产美女精品免费电影| 精品国产一区三区| 成人影院在线播放| 日韩精品中文字幕在线观看| 亚洲天堂男人av| 中文字幕一区二区三区在线观看 | 国产亚洲精品久久久久久无几年桃| 成人中文字幕合集| 成年网站在线免费观看| 欧美一区二区三| 97netav| 不卡av播放| 久久韩剧网电视剧| 日韩一区免费视频| 欧美在线观看你懂的| 极品盗摄国产盗摄合集| 99精品在线免费| 中文字幕免费高清在线| 伊人成年综合电影网| 日韩欧美99| 1204国产成人精品视频| 国产精品高潮呻吟视频| 男男gaygays亚洲| 一区二区三区回区在观看免费视频| 精品久久国产视频| 91久久线看在观草草青青| 免费无码毛片一区二区app| 伊人久久大香| 亚洲黄色在线看| 在线免费观看高清视频| 亚洲v日本v欧美v久久精品| 一级特黄曰皮片视频| 成人精品小蝌蚪| 亚洲人视频在线| 亚洲在线观看| 成人一区二区av| 日产精品一区二区| 久久福利电影| 视频一区中文字幕精品| 国产欧美日韩精品在线观看| 日韩精品美女| 久久久久国产一区二区三区| 欧美精品日韩少妇| 亚洲欧美国产高清va在线播| 蜜桃视频污在线观看| 欧美一区二区三区电影| 中文字幕无码乱码人妻日韩精品| 天天影视涩香欲综合网| 劲爆欧美第一页| 中文字幕日本不卡| 久久视频精品在线观看| 97se狠狠狠综合亚洲狠狠| 任你躁av一区二区三区| 狠狠色狠狠色综合系列| www.精品在线| 日本一区中文字幕| 男人亚洲天堂网| 日韩视频二区| 麻豆tv在线播放| 在线精品在线| 黄色一级片黄色| 午夜久久黄色| 日韩欧美一级在线| 欧美1区2区视频| 中文字幕超清在线免费观看| 日韩中文首页| 亚洲五月六月| 四季av一区二区凹凸精品| 日韩免费毛片| 成人网18免费网站| 视频一区视频二区视频三区视频四区国产| 久久动漫网址| 精品国产一区二区三区四区vr | 日韩一级片在线播放| 国产尤物视频在线观看| 欧美肥妇毛茸茸| 国产女主播福利| 日韩一级大片在线| 亚洲第一页视频| 亚洲国产精品va在线看黑人动漫 | 99视频这里有精品| 成人免费视频a| 亚洲一区二区三区免费| 国产精品视频在线免费观看| 都市激情亚洲| 欧美日韩在线高清| 日本一二区不卡| 免费成人进口网站| 欧美精品大片| 自拍日韩亚洲一区在线| 久久国产精品99国产| 少妇激情一区二区三区| 久久99精品网久久| 欧美69精品久久久久久不卡| 成人高清视频在线| 久久精品国产亚洲av久| 国产精品久久久久影院| 久久久久久久久久网站| 午夜精品久久久久久久久| 亚洲熟妇无码乱子av电影| 在线视频欧美精品| 国产精品免费无遮挡| 亚洲精品在线观看视频| 黄色片免费在线| 久久久国产视频91| av手机在线观看| 国产精品入口福利| 97人人澡人人爽91综合色| 免费国产一区二区| 欧美电影免费播放| 亚洲中文字幕无码av永久| 日韩不卡一区二区三区| 欧美体内she精高潮| 99精品1区2区| 日本不卡一二区| 精品久久久中文| 亚洲在线观看av| 亚洲国产美女精品久久久久∴| √新版天堂资源在线资源| 欧美激情国产高清| 91伊人久久| 国产一区二区不卡视频在线观看| 日本一二区不卡| 青青艹视频在线| 精品在线视频一区| 在线免费观看麻豆| 亚洲精品国产第一综合99久久| 亚洲天堂一区在线| 欧美一区二区在线观看| 精品av中文字幕在线毛片| 欧美乱妇40p| 成人国产综合| 精品国产乱码久久久久久久软件 | 欧美成人免费观看| 日韩电影免费观看高清完整版| 96成人在线视频| 色爱综合网欧美| 成人三级视频在线播放| 成人午夜av在线| 国产福利视频网站| 在线观看亚洲一区| 神马一区二区三区| 九九热这里只有精品6| 欧美黄色网络| 日韩精品资源| 欧美在线综合| 久久久老熟女一区二区三区91| 亚洲同性同志一二三专区| 蜜臀99久久精品久久久久小说 | www日韩tube| 欧美亚洲伦理www| 牛牛影视久久网| 六月婷婷在线视频| 成人毛片在线观看| 欧美三根一起进三p| 3d动漫精品啪啪一区二区竹菊| 免费理论片在线观看播放老| 午夜免费日韩视频| 女仆av观看一区| 777777av| aa级大片欧美| 国产成人在线观看网站| 精品国产91乱码一区二区三区 | 精品动漫一区二区| 亚洲欧美强伦一区二区| 久久91精品国产91久久久| 精品久久久久久久久久岛国gif| 亚洲午夜久久久影院伊人| 琪琪一区二区三区| 欧美成人另类视频| 欧美色综合影院| aiai在线| 国产欧美一区二区三区视频| 成人情趣视频网站| 污片在线免费看| 成人欧美一区二区三区小说 | 超碰免费在线公开| 久久99精品久久久久久久久久久久| 刘亦菲国产毛片bd| 欧美视频精品在线观看| 日本视频在线| 亚洲一区二区三区视频| 欧美 日韩 国产精品免费观看| 香蕉视频xxxx| 亚洲国产精品人人做人人爽| 偷拍自拍在线| 国产精品白丝jk喷水视频一区 | 99久久国产综合精品女不卡| 国产区在线观看视频| 亚洲欧美中文字幕| 国产精品久久久久久久久免费高清| 中文字幕不卡每日更新1区2区| 精久久久久久久久久久| 国产av无码专区亚洲av毛网站| 日韩欧美高清一区| 成人免费观看在线观看| 欧美国产综合视频| 欧美xxxxx视频| 中文字幕av一区二区| 波多野结衣 在线| 韩国v欧美v亚洲v日本v| 精品一区在线观看视频| 欧美va亚洲va国产综合| 国产精品电影| 俄罗斯精品一区二区三区| 中文在线观看免费高清| 国产日韩视频| 性色av浪潮av| 性久久久久久久| 精品视频二区| 91中文字幕一区| 国产日韩欧美三级| 亚洲一区二区精品在线观看| 999国产在线视频| 亚洲成人免费在线观看| 日韩成人av免费| 99久久99九九99九九九| 精品视频在线播放免| 成人免费一区二区三区牛牛| 日本一区二区在线视频| 国产成人精品免费看| 国产一级精品毛片| 欧美激情精品久久久久久蜜臀| 国产一区网站|