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
作者最新文章
JavaScript异步发送HTTP请求时怎么优雅地处理错误
2026-11-05 17:10:44
5款主流JS在线运行工具对比:CodePen、JSFiddle与StackBlitz怎么选
2026-11-05 17:04:04
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
