栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

说说instanceof和typeof的实现原理并自己模拟实现一个instanceof

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

说说instanceof和typeof的实现原理并自己模拟实现一个instanceof

  • instanceof
    • 返回
      boolean
    • 通过调用 class 的
      [Symbol.hasInstance]
      static method 来判断一个 object 是否是一个 class 的 instance
    • 缺省行为:判断 object 的 prototype chain 中是否有任意一个 prototype 与 class 的 prototype 相等
    • polyfill:
      interface IConstructor<T> {  new(...args: any[]): T}function isObject(o: any) {  return (typeof o === 'object' || typeof o === 'function') && o !== null}function instanceOf<T>(obj: any, cls: IConstructor<T>): obj is T {  if (isObject(cls)) {    if (typeof cls[Symbol.hasInstance] === 'function')      return cls[Symbol.hasInstance](obj)    else if (typeof cls === 'function') {      if (isObject(cls.prototype))        return cls.prototype.isPrototypeOf(obj)      else return false    } else throw new TypeError('cls is not callable')  } else throw new TypeError('cls is not an object')}
  • typeof
    • 返回
      'string', 'number', 'undefined', 'boolean', 'object', 'function', 'symbol'
    • 获取数据底层的类型标签。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号