第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

JavaScript 入門教程

JavaScript instanceof

instanceof 運(yùn)算符用于檢測(cè)構(gòu)造函數(shù)的 prototype 屬性是否出現(xiàn)在某個(gè)實(shí)例對(duì)象的原型鏈上。(MDN)

instanceof 是另一種檢測(cè)類型的手段,但通常用于檢測(cè)對(duì)象之間的關(guān)系,如某個(gè)對(duì)象是不是由某個(gè)構(gòu)造函數(shù)生成的。

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

var person = new Person('小明');

console.log(
  person instanceof Person,
); // 輸出:true

1. 語(yǔ)法

對(duì)象 instanceof 構(gòu)造函數(shù);

雖然語(yǔ)法是這樣的,其實(shí)左側(cè)可以是任意數(shù)據(jù)類型,但右側(cè)必須是一個(gè)函數(shù)。

否則會(huì)報(bào)如下錯(cuò)誤:

[] instanceof {};

// Uncaught TypeError: Right-hand side of 'instanceof' is not callable

錯(cuò)誤大致意思是 instanceof 的右操作數(shù)不能被調(diào)用。

JavaScript ,可被調(diào)用的目前只有函數(shù)。

2. 注意點(diǎn)

使用 instanceof 檢測(cè)的時(shí)候,不一定只有一個(gè)為 true 的結(jié)果。

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

var person = new Person('小明');

console.log(
  person instanceof Person,
  person instanceof Object,
); // 輸出:true

因?yàn)?instanceof 實(shí)際上是去左操作數(shù)的原型鏈上尋找有沒(méi)有右操作數(shù)的原型

person 的原型鏈上既匹配到 Person.prototype 又能匹配到 Object.prototype,所以都能返回 true。

使用的時(shí)候要注意這個(gè)問(wèn)題,如判斷某個(gè)對(duì)象的原型鏈上是否有 Object.prototype 的時(shí)候,要考慮到一些其他對(duì)象。

[] instanceof Object; // true

數(shù)組的原型鏈上也是有 Object.prototype 的,所以做一些檢測(cè)的時(shí)候要考慮一些特殊情況。

3. 小結(jié)

instanceof 可以用來(lái)檢測(cè)對(duì)象和構(gòu)造函數(shù)之間的關(guān)系,其檢測(cè)的原理是左操作數(shù)的原型上是否有右操作數(shù)的 prototype 屬性,所以要注意一些檢測(cè)的特殊情況。