javascript中instanceof运算符的用法详解
更新时间:2022年06月21日 10:08:44 作者:小旭2021
本文详细讲解了javascript中instanceof运算符的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud)
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
概述
instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
语法
obj instanceof Object;//true 实例obj在不在Object构造函数中
描述
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
实例
1.instanceof的普通的用法,obj instanceof Object 检测Object.prototype是否存在于参数obj的原型链上。
Person的原型在p的原型链中
function Person(){}; var p =new Person(); console.log(p instanceof Person);//true
2.继承中判断实例是否属于它的父类
Student和Person都在s的原型链中
function Person(){}; function Student(){}; var p =new Person(); Student.prototype=p;//继承原型 var s=new Student(); console.log(s instanceof Student);//true console.log(s instanceof Person);//true
3.复杂用法
这里的案例要有熟练的原型链的认识才能理解
function Person() {} console.log(Object instanceof Object); //true //第一个Object的原型链:Object=> //Object.__proto__ => Function.prototype=>Function.prototype.__proto__=>Object.prototype //第二个Object的原型:Object=> Object.prototype console.log(Function instanceof Function); //true //第一个Function的原型链:Function=>Function.__proto__ => Function.prototype //第二个Function的原型:Function=>Function.prototype console.log(Function instanceof Object); //true //Function=> //Function.__proto__=>Function.prototype=>Function.prototype.__proto__=>Object.prototype //Object => Object.prototype console.log(Person instanceof Function); //true //Person=>Person.__proto__=>Function.prototype //Function=>Function.prototype console.log(String instanceof String); //false //第一个String的原型链:String=> //String.__proto__=>Function.prototype=>Function.prototype.__proto__=>Object.prototype //第二个String的原型链:String=>String.prototype console.log(Boolean instanceof Boolean); //false //第一个Boolean的原型链:Boolean=> //Boolean.__proto__=>Function.prototype=>Function.prototype.__proto__=>Object.prototype //第二个Boolean的原型链:Boolean=>Boolean.prototype console.log(Person instanceof Person); //false //第一个Person的原型链:Person=> //Person.__proto__=>Function.prototype=>Function.prototype.__proto__=>Object.prototype //第二个Person的原型链:Person=>Person.prototype
总结
对应上述规范做个函数模拟A instanceof B:
function _instanceof(A, B) { var O = B.prototype;// 取B的显示原型 A = A.__proto__;// 取A的隐式原型 while (true) { //Object.prototype.__proto__ === null if (A === null) return false; if (O === A)// 这里重点:当 O 严格等于 A 时,返回 true return true; A = A.__proto__; } }
到此这篇关于javascript中instanceof运算符的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持程序员之家。
相关文章
图文详解Heap Sort堆排序算法及JavaScript的代码实现
这篇文章以图文详解Heap Sort堆排序算法及JavaScript的代码实现,堆排序算法基于类二叉树的堆数据结构,需要的朋友可以参考下2016-05-05Node.js生成HttpStatusCode辅助类发布到npm
本篇文章小编为大家介绍利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm,有需要的朋友可以参考一下2013-04-04
最新评论