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

贊助商

分類目錄

贊助商

最新文章

搜索

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

作者:admin    時(shí)間:2022-7-5 11:51:49    瀏覽:

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

題目1:

請(qǐng)問(wèn),以下的getName 執(zhí)行結(jié)果為:

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

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

Ming.getName();

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

題目2:

請(qǐng)問(wèn),以下的getName 執(zhí)行結(jié)果為:

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

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

題目3:

請(qǐng)問(wèn),以下的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(); 這個(gè)調(diào)用方式而定(請(qǐng)注意,在此調(diào)用的前方?jīng)]有任何的對(duì)象),這種調(diào)用方式會(huì)稱為“simple call”(簡(jiǎn)單調(diào)用),this的指向?yàn)?code>window,結(jié)果會(huì)是1. '全域'。

題目4:

請(qǐng)問(wèn),以下的getName 執(zhí)行結(jié)果為:

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

var myName = '全域';

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

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

題目5:

請(qǐng)問(wèn),以下的執(zhí)行結(jié)果為:

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

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

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

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

總結(jié)

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

相關(guān)文章

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