JavaScript instanceof 运算符详解与原型链判断

作者:代码拾荒时间:2026-10-30 08:37:15浏览:83

本文详解JavaScript中instanceof运算符的用法,该运算符用于检测构造函数的prototype属性是否存在于对象的原型链上。通过普遍用法、继承关系判断及内置对象(String、Date)与自定义类型(Car)的示例,展示其在确定对象类型归属中的应用。

instanceof运算符的基本原理

instanceof运算符的主要功能是检测某个构造函数的prototype属性是否存在于指定对象的原型链中。

instanceof的基本用法与继承判断

实例一:基本用法

语法格式为A instanceof B,其作用是判断B.prototype是否位于参数A的原型链上。


function Ben() {

}
var ben = new Ben();
console.log(ben instanceof Ben);//true

实例二:在继承关系中判断实例是否属于其父类。


function Ben_parent() {}

function Ben_son() {}

Ben_son.prototype = new Ben_parent();//原型继承

var ben_son = new Ben_son();

console.log(ben_son instanceof Ben_son);//true

console.log(ben_son instanceof Ben_parent);//true

内置对象与Object类型的关系验证

实例三:验证String对象和Date对象均属于Object类型。

以下代码使用instanceof来证明String和Date对象同时属于Object类型。


var simpleStr = "This is a simple string"; 
var myString = new String();
var newStr  = new String("String created with constructor");
var myDate  = new Date();
var myObj   = {};

simpleStr instanceof String; // returns false, 检查原型链会找到 undefined
myString instanceof String; // returns true
newStr  instanceof String; // returns true
myString instanceof Object; // returns true

myObj instanceof Object;  // returns true, despite an undefined prototype
({}) instanceof Object;  // returns true, 同上

myString instanceof Date;  // returns false

myDate instanceof Date;   // returns true
myDate instanceof Object;  // returns true
myDate instanceof String;  // returns false

自定义类型的类型归属判断

实例四:演示mycar对象既属于Car类型,同时也属于Object类型。

以下代码定义了一个Car类型及其实例mycar。通过instanceof运算符可以确认,该对象既属于Car类型,也属于Object类型。


function Car(make, model, year) {
 this.make = make;
 this.model = model;
 this.year = year;
}
var mycar = new Car("Honda", "Accord", 1998);
var a = mycar instanceof Car;  // 返回 true
var b = mycar instanceof Object; // 返回 true

作者最新文章