精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩a在线播放| 国产精品久久久久久久久男| 一本色道久久hezyo无码| 国产理论电影在线| 成人性生交大片| 欧美亚州一区二区三区| 免费网站在线高清观看| 日韩视频网站在线观看| 国产精品电影一区二区| 成人欧美一区二区三区在线观看| 国产精品第9页| 精品国产中文字幕第一页| 欧美高清性hdvideosex| 拔插拔插海外华人免费| 国产网站在线播放| 国产老肥熟一区二区三区| 456亚洲影院| 手机av在线看| 亚洲精华一区二区三区| 欧美色图天堂网| 中国老女人av| 四虎在线观看| 国产中文字幕精品| 欧美在线xxx| 日韩av手机在线免费观看| 136国产福利精品导航网址应用| 精品久久久久久久久中文字幕| 日韩精品久久一区| 性生交生活影碟片| 免费观看成人av| 美女久久久久久久久久久| 亚洲欧美手机在线| 欧美丰满熟妇bbbbbb| 亚洲熟女乱色一区二区三区久久久| 精品少妇av| 亚洲国产成人91精品| 亚洲天堂2018av| 91超碰在线免费| 老司机在线视频二区| 成人国产精品免费| 国产一区深夜福利| 国产精品一区无码| 欧美一区二区三区久久精品茉莉花| 亚洲欧美另类自拍| 99精品一区二区三区无码吞精| 日本h片久久| 欧美日韩日本国产| 国产小视频免费| 麻豆av免费在线观看| 国产欧美日韩激情| 青青草成人网| 欧洲天堂在线观看| 国产99久久久久| 3d蒂法精品啪啪一区二区免费| 中文字幕av第一页| 久久久久久久高潮| 欧美自拍视频在线| 国产专区第一页| 一本久道久久综合狠狠爱| 欧美激情一级二级| 欧美精品一区二区蜜桃| 欧美色图麻豆| 欧美人成在线视频| 九九热最新地址| 亚洲国产一成人久久精品| 日韩一中文字幕| 免费在线观看a级片| 久久国产亚洲| 久久精品欧美视频| 三级在线观看免费大全| 成人亚洲一区二区| 自拍亚洲一区欧美另类| 国产视频精品免费| 亚洲激情中文在线| 久久精品91久久香蕉加勒比| 少妇高潮惨叫久久久久| 国产精品久久久久久久免费观看| 北条麻妃一区二区三区中文字幕 | 美国黄色一级视频| 91欧美日韩在线| 亚洲第一中文字幕在线观看| 亚洲啪av永久无码精品放毛片| 成人av综合网| 日韩精品视频免费| 91在线无精精品白丝| 色135综合网| 久色乳综合思思在线视频| 久草视频中文在线| 国产精品啊v在线| 91高清在线免费观看| 国产精品第5页| 美女视频一区在线观看| 91精品久久久久久久久久入口| 国产精品国产一区二区三区四区 | 中文字幕日本视频| 精品一区二区三区免费观看| 亚洲综合色激情五月| 欧美一级视频免费| 国产精品三级久久久久三级| 午夜探花在线观看| 超碰在线99| 色欧美片视频在线观看| 在线观看免费黄网站| 日韩激情欧美| 亚洲人成网站色ww在线| 国产高清视频免费在线观看| 亚洲视屏一区| 国产成人精品最新| 国产同性人妖ts口直男| 91免费看视频| 2021狠狠干| av资源网在线播放| 欧美日韩免费一区二区三区视频| 日批免费观看视频| 成人系列视频| 97久久久久久| 91亚洲国产成人精品一区| 成人免费高清视频| 午夜视频久久久| 久久青青色综合| 欧美在线播放高清精品| 男人网站在线观看| 国产一区二区在线| 欧美成人一二三| 精产国品一区二区| 成人午夜私人影院| 异国色恋浪漫潭| 日韩精品一区二区三区av| 精品久久久久久无| 好吊日在线视频| 亚洲欧美卡通另类91av| 国产美女精彩久久| 天堂在线视频网站| 中文字幕av资源一区| 欧美一级中文字幕| 成人在线高清| 亚洲欧美日韩天堂| 日韩欧美a级片| 国产很黄免费观看久久| 在线免费观看成人| 成人不卡视频| 亚洲欧美激情一区| 久久久国产精品成人免费| 国产成人亚洲综合a∨猫咪| 欧美国产一二三区| 九色porny自拍视频在线观看 | 国产精品免费网站在线观看| 日韩中文字幕二区| 色狠狠久久av综合| 韩国三级电影久久久久久| 中文字幕乱码一区二区| 91亚洲精品一区二区乱码| 黄色一级片黄色| 婷婷视频一区二区三区| 久久视频在线看| 国产精品美女一区| 综合网在线视频| 五月六月丁香婷婷| 自拍日韩欧美| 成人亚洲激情网| 高清免费电影在线观看| 51精品国自产在线| 91日韩中文字幕| 国产一区二区三区精品视频| 中文字幕日韩精品一区二区| 亚洲欧美在线人成swag| 久久精品99久久久久久久久| 国产精品羞羞答答在线| 亚洲精品少妇30p| 无套内谢丰满少妇中文字幕| 欧美a级片一区| 超碰97网站| 欧美蜜桃一区二区三区| 成人黄色免费片| 国产小视频在线播放| 午夜一区二区三区在线观看| 亚洲色图欧美日韩| 99在线精品视频在线观看| 精品一区二区三区视频日产| 在线看的毛片| 伊人青青综合网站| 国产免费黄色片| 亚洲午夜免费电影| 手机在线成人av| 视频一区二区三区中文字幕| 欧美一区视久久| 欧洲精品久久久久毛片完整版| 日韩在线视频中文字幕| 午夜久久久久久久久久| 黑人巨大精品欧美一区二区| 日本欧美一区二区三区不卡视频 | 中文字幕日韩精品久久| 亚洲欧美日本国产| 欧日韩不卡在线视频| 成人精品一区二区三区免费| 欧美精品一卡两卡| 快灬快灬一下爽蜜桃在线观看| 老司机免费视频一区二区三区| 超碰97在线看| 九九综合在线| 亚洲一区二区三区视频| 国产中文在线播放| 色伦专区97中文字幕| 丁香六月色婷婷| 在线观看免费成人| 四虎精品免费视频| 99久久精品免费看| 亚洲人视频在线| 中日韩视频在线观看| 日韩av电影免费在线观看| 精品伊人久久| 国产99久久精品一区二区 夜夜躁日日躁 | 狠狠88综合久久久久综合网| 欧美不卡在线一区二区三区| 在线免费观看亚洲| 日韩免费观看视频| 免费在线观看av电影| 国产一区二区三区精品久久久 | 国产99re66在线视频| 国产一区二区三区毛片| 黄色片一区二区三区| 欧美日韩国产色站一区二区三区| 日韩av电影网| 亚洲精品综合在线| 99精品欧美一区二区| 国产毛片精品一区| 天堂av在线网站| 国产精品尤物| 男人的天堂avav| 91麻豆国产自产在线观看亚洲| 国产福利久久| 亚洲精品三区| 国产精品久久久久久久一区探花 | 欧美日韩亚洲第一| 欧美日一区二区在线观看| 欧美日韩一区综合| 国产精品玖玖玖在线资源| 91社区国产高清| 成人涩涩视频| 国产成人一区二区三区小说| 97在线超碰| 欧美另类69精品久久久久9999| 91涩漫在线观看| 亚洲色在线视频| 天堂av网在线| 精品日韩一区二区三区免费视频| 亚洲一区二区色| 在线观看免费一区| 无码视频在线观看| 在线视频中文字幕一区二区| 天堂中文字幕在线观看| 姬川优奈aav一区二区| 久久精品视频6| 亚洲综合色成人| 精品国产精品国产精品| 1区2区3区欧美| 欧美成人777| 亚洲女子a中天字幕| 欧美一级特黄高清视频| 中文字幕一区免费在线观看| 国产福利在线导航| 国产精品视频线看| 男女男精品视频网站| 国产精品嫩草影院com| www中文在线| 亚洲欧美韩国综合色| 国产亚洲精品码| 一区二区三区中文字幕精品精品 | 久久亚洲精品一区| 高清性色生活片在线观看| 国产午夜精品免费一区二区三区 | 欧美日韩a v| 欧美日韩在线播放一区| 亚洲中文一区二区三区| 欧美午夜在线观看| 国产精品美女一区| 日韩欧美电影在线| 天堂中文在线资源| 亚洲日本欧美日韩高观看| 成人欧美一区| 欧美精品在线极品| 美女露胸视频在线观看| 国产精品视频播放| 国产精品17p| 亚洲国产精品久久久久久女王| 欧美女激情福利| 黄色国产小视频| 国产91高潮流白浆在线麻豆| 韩国女同性做爰三级| 国产精品亚洲综合天堂夜夜| sis001亚洲原创区| 国产精品福利久久久| 麻豆视频在线观看| 亚洲成人av免费| 超碰在线观看91| 日韩欧美国产系列| 日韩精品福利| 欧美成年人视频| 色婷婷综合久久久中字幕精品久久| 成人欧美一区二区三区在线| 欧美五码在线| 只有这里有精品| 日本网站在线观看一区二区三区| 波多野吉衣在线视频| 中文字幕不卡的av| 亚洲影院在线播放| 欧美mv日韩mv亚洲| 免费观看在线黄色网| 日本精品久久久| 国产日韩三级| 久久福利一区二区| 久久精品久久99精品久久| 在线 丝袜 欧美 日韩 制服| 亚洲欧美日韩人成在线播放| 亚洲 国产 日韩 欧美| 亚洲国产欧美自拍| 91福利国产在线观看菠萝蜜| 国产精品一区二区三区成人| 亚洲色图丝袜| 国产69精品久久久久999小说| 国产剧情在线观看一区二区| 国产三级aaa| 欧美视频完全免费看| 免费在线超碰| 欧美在线一区二区三区四| 成人在线视频你懂的| 少妇久久久久久被弄到高潮| 国内外成人在线| 制服丨自拍丨欧美丨动漫丨| 欧美性色综合网| 国产香蕉视频在线看| 日韩免费在线看| 久久综合亚洲| 久久国产色av免费观看| 久久一区二区三区国产精品| 国产一区二区三区影院| 亚洲黄色av网站| 色网在线免费观看| 美女被啪啪一区二区| 国产婷婷精品| 自拍偷拍中文字幕| 色综合激情五月| 搞黄视频在线观看| 国产免费一区二区三区在线能观看| 欧美精品尤物在线观看| 黄色三级视频片| 亚洲国产精品黑人久久久| 中文字幕一二三四| 日韩在线观看免费| 亚洲成人高清| 最新中文字幕久久| 国产原创一区二区三区| 国产suv一区二区三区| 日韩色在线观看| 成人女同在线观看| 噜噜噜噜噜久久久久久91| 久久综合狠狠| 刘亦菲国产毛片bd| 日韩一卡二卡三卡| 激情黄产视频在线免费观看| 久久精品日产第一区二区三区精品版| 新67194成人永久网站| 国产jk精品白丝av在线观看| 欧美三级中文字| 少妇视频在线| 久久久久无码国产精品一区| 日本美女一区二区三区视频| 国产一区二区播放| 日韩av在线精品| 亚洲精品555| 欧美亚洲黄色片| 国产性做久久久久久| 国产精品一区二区人人爽| 欧美—级a级欧美特级ar全黄| 日韩精品亚洲aⅴ在线影院| 国产精品一区二区羞羞答答| 亚洲自拍偷拍图区| 激情综合闲人网| 99久久自偷自偷国产精品不卡| 99视频一区| 女同久久另类69精品国产| 欧美mv日韩mv亚洲| 最新日韩一区| 真人抽搐一进一出视频| 日本一区二区三区在线不卡| 国产成人精品一区二区无码呦| 69影院欧美专区视频| 婷婷激情图片久久| 欧美一区二区三区成人精品| 欧美电影影音先锋| 日韩电影毛片| 91嫩草国产丨精品入口麻豆| 久久久99精品免费观看| av中文字幕在线免费观看| 日韩女优在线播放| 欧美福利电影在线观看| 在线观看亚洲大片短视频| 亚洲电影天堂av| 高清在线一区二区| 免费看污污网站|