javascript中instanceof运算符的用法详解

javascript中instanceof运算符的用法详解

概述

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运算符的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易知道(ezd.cc)。

推荐阅读

    怎么检测电脑硬件问题

    怎么检测电脑硬件问题,电脑硬件,检测,怎么,电脑硬件故障的几种简单检查方法:一、首先确定你的电源已经打开、所有的连线全部连接到位。笔

    Python之可迭代对象、迭代器、生成器

    Python之可迭代对象、迭代器、生成器,迭代,生成器,一、概念描述可迭代对象就是可以迭代的对象,我们可以通过内置的iter函数获取其迭代器,可

    电脑店硬盘|电脑硬盘检测工具

    电脑店硬盘|电脑硬盘检测工具,,电脑硬盘检测工具说起硬盘坏道大家往往都是谈之色变,其实硬盘坏道也是可以早发现,早处理,把坏道带来的麻烦减

    应用程序对象

    应用程序对象,,应用程序对象是一个应用程序级对象,用于在所有用户之间共享信息,并且在Web应用程序运行期间可以保存数据。 应用的性质: 方法

    电脑cpu损坏检测|检测cpu是否损坏

    电脑cpu损坏检测|检测cpu是否损坏,,1. 检测cpu是否损坏cpu没有那么脆弱。一般来说只是表面有划痕或者小坑之类的损伤并不会影响CPU稳定性

    检测电脑驱动的|检测电脑驱动的命令

    检测电脑驱动的|检测电脑驱动的命令,,1. 检测电脑驱动的命令方法一:右键点击“我的电脑”——下拉菜单中选“属性”——属性中选“硬件”—