instanceof与constructor的区别

来源:http://www.chinese-glasses.com 作者:Web前端 人气:86 发布时间:2020-03-24
摘要:时间: 2019-11-12阅读: 96标签: instanceof 时间: 2018-12-20阅读: 460标签: js知识 名词介绍 instanceof用于判断某个对象是否是另一个对象(构造方法)的实例。instanceof会查找原型链,直到null如果还

时间: 2019-11-12阅读: 96标签: instanceof

时间: 2018-12-20阅读: 460标签: js知识名词介绍

instanceof 用于判断某个对象是否是另一个对象(构造方法)的实例。instanceof会查找原型链,直到null如果还不是后面这个对象的实例的话就返回false,否则就返回true

instanceof的作用是判断实例对象是否为构造函数的实例,实际上判断的是实例对象的__proto__属性与构造函数的prototype属性是否指向同一引用;

代码

constructor的作用是返回实例的构造函数,即返回创建此对象的函数的引用。

function instanceofFunc(obj, cons) { // 错误判断 构造函数必须是一个function 其他的均报错 if (typeof cons !== 'function') throw new Error('instance error') if (!obj || (typeof obj !== 'object'  typeof obj !== 'function')) return false // 获取到原型对象 let proto = cons.prototype // 如果obj的原型对象不是null while (obj.__proto__) { if (obj.__proto__ === proto) return true obj = obj.__proto__ } return false}console.log(instanceofFunc(() = {}, Function)) // true

区别先贴出代码

!DOCTYPE htmlhtml lang="en"head meta charset="UTF-8" meta name="viewport" content="width=device-width, initial-scale=1.0" meta http-equiv="X-UA-Compatible" content="ie=edge" titleInstanceof/title/headbody /bodyscript // 创建植物plant类 var plant = function(name,where){ this.name = name; this.where = where; document.write(this.name + "喜欢" + this.where + "的环境br"); } // 创建动物animal类 var animal = function(name,food){ this.name = name; this.food = food; document.write(this.name + "吃" + this.food + "br"); } // new两个实例dog和cat var dog = new animal("狗","骨头"); var cat = new animal("猫","鱼"); // new两个实例greenDill和hangBasket var greenDill = new plant("绿萝","湿热"); var hangBasket = new plant("吊篮","温暖湿热");/script/html

上边代码中的创建了两个函数,new了四个实例。

10bet,instanceof

本文由10bet发布于Web前端,转载请注明出处:instanceof与constructor的区别

关键词:

最火资讯