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

全部開發(fā)者教程

JavaScript 入門教程

JavaScript instanceof

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

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

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

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

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

1. 語法

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

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

否則會報如下錯誤:

[] instanceof {};

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

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

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

2. 注意點

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

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

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

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

因為 instanceof 實際上是去左操作數(shù)的原型鏈上尋找有沒有右操作數(shù)的原型

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

使用的時候要注意這個問題,如判斷某個對象的原型鏈上是否有 Object.prototype 的時候,要考慮到一些其他對象。

[] instanceof Object; // true

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

3. 小結(jié)

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