zoukankan      html  css  js  c++  java
  • javascript中的类型的准确检测

            在javascript中,当我们需要知道一个变量的基本数据类型的时候可以使用typeof,结果可以是"undefined、"boolean"、"number"、"string"、"function"和"object",而需要检测引用类型的时候ECMA Script提供了instanceof操作符。但两者在实际操作过程中都将遇到一些问题,比如typeof在检测"RegExp"类型时候返回"function",由于Safari5之前的版本实现了call方法(ECMA-262规定内部实现了call方法的对象都应该返回"function"),所以它的结果跟其他浏览器并不相同。再比如,"instanceof"操作符它与全局作用域密切相关。当页面出现多个框架的时候,比如在第一个框架中定义一个数组,然后在第二个框架中检测那么就不能返回正确结果。
            解决上面提到的问题则可以使用Object.prototype.toString()方法。比如:
            var value=5;
            alert(Object.prototype.toString.call(value));    //[object Number]
            var value=[1,3];
            alert(Object.prototype.toString.call(value));    //[object Array]
            var value=function(){};
            alert(Object.prototype.toString.call(value));    //[object Function]
            ......
            每个类的内部都有一个[[class]]的属性名并且指向它的构造函数名,当调用Object.prototype.toString()方法时,都会返回一个[object NativeConstructiorName]的字符串且原生的构造函数名与全局作用域无关。
            于是,有了相应的返回字符串我们就可以准确的判断变量的数据类型。
  • 相关阅读:
    新手第一次联系oracle的碰到的触发器不能创建的问题
    dubbo注册中心占位符无法解析问题(二)
    dubbo注册中心占位符无法解析问题(一)
    .
    Ubuntu16 安装后配置
    TiDB-----使用 TiUP cluster 在单机上模拟生产环境部署步骤
    TiDB 单机安装(在 Linux OS 上部署本地测试环境)
    WPF查找子控件和父控件方法
    Java基础相关
    C++ namespace浅析
  • 原文地址:https://www.cnblogs.com/Arvin-wjw/p/3446203.html
Copyright © 2011-2022 走看看