• 如何准确的判断一个数据的类型


    如何准确的判断一个数据的类型(使用Object.prototype.toString.call())

    1.typeof:只能判断基本数据类型,不能判断引用数据类型,判断出来的都是Object
    2.instanceof:只能进行类型的对比,不能进行类型的判断
    3.var arr = [];
    console.log(Object.prototype.toString.call(arr));//输出[object Array],是一个数组对象
    4.var arr = [];
    console.dir(arr);//输出Array(0)
    5.Object身上的toString方法与其他对象身上的toString方法不是一个方法,而是其他对象继承Object原型以后改写的toString方法:
    var arr = [];
    arr.toString()得到的是一个空字符串""
    然而Object.prototype.toString.call(arr)输出的是[object Array],说明他俩不是同一个方法
    6.在Array.prototype.slice.call(arguments).slice(1)中,arguments本身没有slice方法,所以需要借助call这个方法去借用slice方法。而call方法是用来改变this指向的,也就是说Array此时的指向arguments,所以arguments拥有了slice方法
    7.instanceof
    function Fn(){
        console.log(this instanceof Fn);
    }
    Fn();//结果为false(说明此时this不指向函数本身,即Fn。因为只是执行一个函数时,this指向window)
    如果是new Fn();,则结果为true(说明此时this指向函数本身,即Fn。因为当new一个函数时,this会指向实例化对象,也就是Fn)
  • 相关阅读:
    VMware Tools的安装
    XmlSerializer
    string[][]和string[,] 以及 int[][]和int[,]
    Get Length 使用dynamic关键字
    Cocos2d-x 3.0final 终结者系列教程01-无论是从cocos2d-x2.x升级到版本cocos2d-x3.x
    Hosting WCF Service
    A*算法进入
    OpenCV面、人眼检测
    JAVA学习篇--JAVA两种编程模式控制
    采用Java语言如何实现高速文件复制?
  • 原文地址:https://www.cnblogs.com/Leslie-Cheung1584304774/p/10544155.html
Copyright © 2020-2023  润新知