技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

JavaScript this 面試練習(xí)題5例

作者:admin    時間:2022-7-5 11:51:49    瀏覽:

JavaScript面試時,this是必考的題目,因此有必要熟練掌握this這個知識點。在前面,我整理了6個關(guān)于this關(guān)鍵字的面試問題,本文中,再次通過5道練習(xí)題,學(xué)習(xí)this的使用。

題目1:

請問,以下的getName 執(zhí)行結(jié)果為:

  1. '全域'
  2. '小明'
function getName() {
  console.log(this.myName);
}
var myName = '全域';

// 主要程序代碼
var Ming = {
  myName: '小明',
  getName: getName
};

Ming.getName();

.
.
.
.
.
.
.
本題答案為2. '小明',請記住一個概念,傳統(tǒng)函數(shù)如何定義不會影響this 的指向,會影響指向的只有調(diào)用方式,在此是在 Ming 下調(diào)用 getName 的方法,因此this 會指向Ming

題目2:

請問,以下的getName 執(zhí)行結(jié)果為:

  1. '全域'
  2. '小明'
var Ming = {
  myName: '小明',
  getName: function() {
    console.log(this.myName);
  }
};
Ming.getName();

.
.
.
.
.
.
.
這題將 getName 函數(shù)直接定義在 Ming 的對象下,概念也與先前相同,不管如何定義,直接看是如何調(diào)用,所以本題結(jié)果依然是2. '小明'。

題目3:

請問,以下的getName 執(zhí)行結(jié)果為:

  1. '全域'
  2. '小明'
function getName() {
  console.log(this.myName);
}

var myName = '全域';

// 主要程序代碼
var Ming = {
  myName: '小明',
  fn: function() {
    getName();
  }
};
Ming.fn();

.
.
.
.
.
.
.
這題在外層調(diào)用 fn() 方法,內(nèi)部再“直接調(diào)用getName 函數(shù)”,所以函數(shù)的 this 是直接由 getName(); 這個調(diào)用方式而定(請注意,在此調(diào)用的前方?jīng)]有任何的對象),這種調(diào)用方式會稱為“simple call”(簡單調(diào)用),this的指向為window,結(jié)果會是1. '全域'。

題目4:

請問,以下的getName 執(zhí)行結(jié)果為:

  1. '全域'
  2. '小明'
  3. '小明家'
function getName() {
  console.log(this.myName);
}

var myName = '全域';

// 主要程序代碼
var Ming = {
  myName: '小明',
  family: {
    myName: '小明家',
    getName: getName
  }
  
};
Ming.family.getName();

.
.
.
.
.
.
.
本題是 “對象的方法調(diào)用”,只要檢視 getName 調(diào)用時前方的對象是什么就可確認(rèn) this 的指向(family 對象),因此this 指向為family 結(jié)果為3. '小明家'。

題目5:

請問,以下的執(zhí)行結(jié)果為:

  1. '全域'
  2. '小明'
var myName = '全域';

// 主要程序代碼
var Ming = {
  myName: '小明',
  fn: function() {
    setTimeout(function() {
      console.log(this.myName);
    }, 0);
  }
};
Ming.fn();

.
.
.
.
.
.
.
本題的結(jié)果為:1.'全域'

這題算是許多新手會遇到的錯誤,在對象內(nèi)調(diào)用時如果出現(xiàn)立即函數(shù)、回調(diào)函數(shù)(callback function)結(jié)果會有什么變化?絕大多數(shù)的情況下這類型都會指向window,所以不建議在此類型下直接調(diào)用this。

總結(jié)

本文通過5道練習(xí)題,都是簡單的概念題,沒有復(fù)雜的邏輯及語法,希望通過本文的習(xí)題練習(xí),你能更好的掌握this這個知識點。除了本文介紹的,你還可以看看關(guān)于this關(guān)鍵字的6個面試問題

相關(guān)文章

標(biāo)簽: this  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */