zoukankan      html  css  js  c++  java
  • typeof方法重写(区分数组对象)

    为什么要重写typeof方法?

      typeof 可以准确的判断除object以外的基础数据类型,但不能区分object类型的具体类型,比如 Array 、Date、NULL、NaN 以及自定义类。

         

    观察上面的结果:

    1. typeof NaN的结果是number,可以通过isNaN()来判断(存在局限性,详情点击查看
    2. typeof []的结果是object,可以通过Array.isArray()来判断(存在局限性,详情点击查看
    3. typeof null的结果是object

    重写typeof代码:

    // 该方法不包含NaN的类型判断
        function myTypeOf (target) {
          var template = {
            '[object Array]': 'array', // 数组
            '[object Object]': 'object', // 对象
            '[object Number]': 'number - object', // 数据对象(用new Number()定义出来的)
            '[object Boolean]': 'boolean - object', // 用new Boolean()定义出来
            '[object String]': 'string - object' // 用new String()定义出来的
          }
          if (target === null) {
            return "null"
          } else if (typeof(target) === 'object') {
            // 返回object时具体区分
            var str = Object.prototype.toString.call(target);
            return template[str]
          } else {
            // 原始值
            return typeof(target);
          }
        }
  • 相关阅读:
    B3
    B2
    b1
    个人作业——软件工程实践总结作业
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
    Beta 冲刺 (5/7)
    Beta 冲刺 (4/7)
    Beta 冲刺 (3/7)
  • 原文地址:https://www.cnblogs.com/chenmeijiao/p/12060821.html
Copyright © 2011-2022 走看看