当前位置: 首页 > 面试题库 >

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

秦钟展
2023-03-14
本文向大家介绍说说instanceof和typeof的实现原理并自己模拟实现一个instanceof相关面试题,主要包含被问及说说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'
    • 获取数据底层的类型标签
 类似资料:
  • 本文向大家介绍说说 Dubbo 的实现原理相关面试题,主要包含被问及说说 Dubbo 的实现原理时的应答技巧和注意事项,需要的朋友参考一下 dubbo 作为 rpc 框架,实现的效果就是调用远程的方法就像在本地调用一样。如何做到呢?就是本地有对远程方法的描述,包括方法名、参数、返回值,在 dubbo 中是远程和本地使用同样的接口;然后呢,要有对网络通信的封装,要对调用方来说通信细节是完全不可见的,

  • 本文向大家介绍说说 RPC 的实现原理相关面试题,主要包含被问及说说 RPC 的实现原理时的应答技巧和注意事项,需要的朋友参考一下 首先需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输。其次需要有编解码的模块,因为网络通讯都是传输的字节码,需要将我们使用的对象序列化和反序列化。剩下的就是客户端和服务器端的部分,服务器端暴露要开放的服务接口,客户调用服务接口的一个代理实现,这个代理实现负

  • 本文向大家介绍说一下 HashMap 的实现原理?相关面试题,主要包含被问及说一下 HashMap 的实现原理?时的应答技巧和注意事项,需要的朋友参考一下 HashMap 基于 Hash 算法实现的,我们通过 put(key,value)存储,get(key)来获取。当传入 key 时,HashMap 会根据 key. hashCode() 计算出 hash 值,根据 hash 值将 value

  • 本文向大家介绍说一下 HashSet 的实现原理?相关面试题,主要包含被问及说一下 HashSet 的实现原理?时的应答技巧和注意事项,需要的朋友参考一下 HashSet 是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,相关 HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,HashSe

  • HashSet实际上是一个HashMap实例,数据存储结构都是数组+链表。 HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value都是一个统一的对象PRESENT。 private static final Object PRESENT = new Object(); HashSet中add方法调用的是底层HashMap中的put方法,pu

  • 本文向大家介绍如何实现一个虚拟DOM?说说你的思路相关面试题,主要包含被问及如何实现一个虚拟DOM?说说你的思路时的应答技巧和注意事项,需要的朋友参考一下 就目前我想到的 就只有两种: document.fragment 2.template模板