• 判断对象类型


    参考学习:http://www.cnblogs.com/ziyunfei/archive/2012/11/05/2754156.html
    在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” ,“function”六种。

    对于数组,对象,null来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串。

    要想区别对象、数组、函数单纯使用 typeof 是不行的,JavaScript中,通过Object.prototype.toString方法,判断某个对象值属于哪种内置类型。

    例子:

    var arr = [];
    console.log(Object.prototype.toString.call(arr))

    结果:

    “[object Array]”

    在ES3中,Object.prototype.toString方法的规范如下:

    Object.prototype.toString()
    在toString方法被调用时,会执行下面的操作步骤:

    1. 如果this的值为undefined,则返回"[object Undefined]".
      2.如果this的值为null,则返回"[object Null]".
      3.让O成为调用ToObject(this)的结果.
    2. 获取this对象的[[Class]]属性的值。
    3. 计算出三个字符串"[object ", 第一步的操作结果Result(1), 以及 "]"连接后的新字符串。
    4. 返回第二步的操作结果Result(2)。

    [[Class]]是一个内部属性,所有的对象(原生对象和宿主对象)都拥有该属性.在规范中,[[Class]]是这么定义的:
    内部属性 描述
    [[Class]] 一个字符串值,表明了该对象的类型。
    其过程简单说来就是:1、获取对象的类名(对象类型)。2、然后将[object、获取的类名、]组合并返回。

    var arr=[1,2];
    
    //直接对一个数组调用toString()
    arr.toString();// "1,2"
    判断是否为数组对象
    //通过call指定arr数组为Object.prototype对象中的toString方法的上下文
    Object.prototype.toString.call(arr); //"[object Array]"
    

    判断对象类型是否为数组

    function isArray(arg) {
        if (typeof arg === 'object') {
            return Object.prototype.toString.call(arg) === '[object Array]';
        }
        return false;
    }
    
    
  • 相关阅读:
    移动web开发资源大整合
    移动WEB模拟原声APP滑动删除
    jQuery的live绑定事件在mobile safari(iphone / ipad / ipod)上失效的解决方案
    精仿公众号菜单效果
    javascript markdown 解析器
    第四天
    第三天
    第二天
    第一天
    day5
  • 原文地址:https://www.cnblogs.com/princeness/p/11664942.html
Copyright © 2020-2023  润新知