在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. instanceof的用法
function Person() {} function Person2() {} const usr = new Person(); console.log(usr instanceof Person); // true console.log(usr instanceof Object); // true console.log(usr instanceof Person2); // false 如上代码,定义了两个构造函数, 实用 当然,结果显示, 2. 实现instanceof明白了 function myInstanceof(obj, constructor) { // obj的隐式原型 let implicitPrototype = obj?.__proto__; // 构造函数的原型 const displayPrototype = constructor.prototype; // 遍历原型链 while (implicitPrototype) { // 找到,返回true if (implicitPrototype === displayPrototype) return true; implicitPrototype = implicitPrototype.__proto__; } // 遍历结束还没找到,返回false return false; }
首先拿到实例对象的隐式原型: 接着,就可以通过不断得到上一级的隐式原型: implicitPrototype = implicitPrototype.__proto__; 来遍历原型链,寻找 当
3. 验证写一个简单的实例验证一下自己实现的 function Person() {} function Person2() {} const usr = new Person(); function myInstanceof(obj, constructor) { let implicitPrototype = obj?.__proto__; const displayPrototype = constructor.prototype; while (implicitPrototype) { if (implicitPrototype === displayPrototype) return true; implicitPrototype = implicitPrototype.__proto__; } return false; } myInstanceof(usr, Person); // true myInstanceof(usr, Object); // true myInstanceof(usr, Person2); // false myInstanceof(usr, Function); // false myInstanceof(usr.__proto__, Person); // false usr.__proto__ instanceof Person; // false 可以看到, 有趣的是, JavaScript常见手写代码: 到此这篇关于JavaScript 手动实现instanceof的文章就介绍到这了,更多相关JavaScript instanceof内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论