玩轉(zhuǎn)面試之JavaScript - instanceof原理

關(guān)于instanceof問(wèn)題不多,通常會(huì)和typeof一起問(wèn)。

初階問(wèn)題:
問(wèn)題:typeof能干什么?

回答:判斷基本類型的,比如:Number, Boolean, Undefined, String, Null, 其他的引用類型和Null會(huì)返回object;

問(wèn)題:如果一個(gè)對(duì)象是數(shù)組,應(yīng)該怎么判斷?

回答:用instanceof,比如對(duì)象是arr,用arr instanceof Array,如果返回ture就表示是數(shù)組,為false就不是。

問(wèn)題:那如果那個(gè)數(shù)組對(duì)象和Object對(duì)象去做運(yùn)算應(yīng)該返回什么呢?

回答:true,因?yàn)镺bject是所有對(duì)象的基類。

進(jìn)階問(wèn)題

問(wèn)題:那下面代碼中三個(gè)輸出為何?

function Person(name, age){
    this.name = name;
    this.age = age;
}

function Student(score){
    this.score = score;
}

Student.prototype = new Person('李明',22);
var s = new Student(99);

console.log(s instanceof Student);  //true
console.log(s instanceof Person);  //true
console.log(s instanceof Object);  //true

問(wèn)題:那instanceof的原理是什么?

image

這是關(guān)于上面這個(gè)函數(shù)的原型鏈圖,我們可以看到對(duì)象s有一條屬于自己的原型鏈,然而Student,Person,和Object對(duì)象的原型屬性所指向的原型對(duì)象都在這條原型鏈上,所以答案就出來(lái)了:

檢測(cè)對(duì)象A是不是另一個(gè)對(duì)象B的實(shí)例的原理是:查看對(duì)象B的prototype屬性指向的原型對(duì)象是否在對(duì)象A的原型鏈上,若在則返回true,若不在則返回false。

作者:良民

鏈接:http://m.itdecent.cn/p/5cfef021603d

來(lái)源:簡(jiǎn)書(shū)

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第3章 基本概念 3.1 語(yǔ)法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡(jiǎn)單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,540評(píng)論 0 21
  • 目錄 1、談?wù)勀銓?duì)Ajax的理解?(概念、特點(diǎn)、作用) 2、說(shuō)說(shuō)你對(duì)延遲對(duì)象deferred的理解? 3、什么是跨...
    w_zhuan閱讀 1,050評(píng)論 1 28
  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,613評(píng)論 0 13
  • 感恩今天早上準(zhǔn)時(shí)趕得上動(dòng)車(chē)票! 感恩我同學(xué)熱情款待!再一次來(lái)到了龍巖古田! 感恩金錢(qián)寶寶的流動(dòng),可以吃到美食! 剛...
    張玉球閱讀 187評(píng)論 0 1
  • 我們每個(gè)人的生命里都有一個(gè)夏天。 我很喜歡軒軒的一張照片,朋友問(wèn)我,那個(gè)小男孩為什么哭?我知道他沒(méi)看過(guò)這個(gè)綜藝節(jié)目...
    木荷月閱讀 1,118評(píng)論 0 0

友情鏈接更多精彩內(nèi)容