首页 > 生活

关于instanceof

更新时间:2025-05-19 23:12:56 阅读: 评论:0

铝镍钴

定义:

instanceof运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

对比对象: 构造函数的prototype 和 实例对象的原型链

举例

// 定义构造函数function Foo(){}

var o = new Foo();

o instanceof Foo; // true,因为 Object.getPrototypeOf(o) === Foo.prototype

需要注意的一些特殊现象

var simpleS章利勇tr = "This is a simple string"雷神游戏本;;var myString = new String();var newStr = new String("String created with constructor");var myDate = new Date();var myO牛仔抹胸裙bj = {};var myNonObj = Object.create(null);simpleStr instanceof男人挽回新高脂膜 String; // 返回 false, 非对象实例,因此返回 falsemyString instanceof String; // 返回 truenewStr instanceof String; // 返回 truemyString instanceof Object; // 返回 truemyObj insit培训学校tanceof Object; // 返回 true, 尽管原型没有定义({}) in做什么最赚钱stanceof Object; 北京印刷学院研究生 // 返回 true, 同上myNonObj instanceof Object; // 返回 false, 一种创建非 Object 实例的对象的方法myString instanceof Date; //返回 falsemyDate instanceof Date; // 返回 truemyDate instanceof Object; // 返回 truemyDate instanceof String; // 返回 false

参考文献

手写一个instanceof

根据定义我们知道对比的两个对象分别是一个实例对象和一个构造函数,判断构造函数的prototype属性是否在实例对象的原型链上, 所以一个简易的实现如下:

function myInstanceof(instance, con近视预防structor) { if (typeof constructor != 离子对手机原理图9;function') { 培训方法 throw new Error(constructor + 'should be a function&高尔夫球练习场app图标#39;)有时候有时候我会相信一切有尽头 } let proto = instance.__proto__; while(proto != null) { if (proto === constructor.prototype自考证书) { return t道路石油沥青rue } proto = proto.__proto__; } return false;}fun办公楼平面图ction Foo() {}const foo = new Foo();function 暗疮图片Fn(){}myInstanceof(foo, Foo) // truemyInstanceof(foo, Object) // truemyInstanceof(foo, Fn) // false

本文发布于:2023-06-04 07:20:56,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/ge/85/214406.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:instanceof
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|学编程|软件玩家|水木编程|编程频道