zoukankan      html  css  js  c++  java
  • js 类型检测

    1、检测字符串、数值、布尔值、undefined、function 使用typeof(在Safari和Chrome中检测正则也会返回 "function")

    2、检测null 应用“===”

    3、检测其它对象:

          方法一:利用instanceof/constructor  

          (再某些ie版本中存在跨iframe问题,每个iframe下都有自己的一套原型链,跨frame实例化的对象彼此是不共享原型链)

    alert(A  instanceof  Object)  
    alert(A  instanceof  Array)  
    alert(A  instanceof  RegExp)    
    alert(A.constructor==Array)  

          例如:

          方法二:利用 Object.prototype.toString.call()  

          (解决了方法一跨iframe 失效的问题)

          例如:

    Object.prototype.toString.call ({})          //"[objectObject]"  
    Object.prototype.toString.call ([1,2,3,4]);  //"[objectArray]"  
    Object.prototype.toString.call(newDate());   //"[objectDate]"  
    Object.prototype.toString.call(/^hello/);    //"[objectRegExp]"  
    Object.prototype.toString.call(newError())   //"[objectError]"  
    Object.prototype.toString.call(newNumber())  //"[objectNumber]"  
     
     

          参考jquery解决方案

    var class2type = {};  
    $.each("Boolean Number String Function Array Date RegExp Object".split(" "), function (i, name) {  
        class2type[ "[object " + name + "]" ] = name.toLowerCase();  
    });  
    $.type = function (obj) {  
        return obj == null ?  
            String(obj) : class2type[ toString.call(obj) ] || "object"  
    };  

           另外,ECMAScript 5 定义了一个新方法Array.isArray(),该函数在参数为数组时返回true,例如

           Array.isArray([])     // true

           所以我们可以定义:  

    if(typeof Array.isArray=="undefined"){  
       Array.isArray=function(obj){  
           return Object.prototype.toString.call(obj)==="[object Array]";  
       }  
    }  
  • 相关阅读:
    二分-hdu-4768-Flyer
    UVa 340 Master-Mind Hints (优化查找&复制数组)
    Android中的多媒体显示之图片缩放
    asp.net总结(一)
    JAVA中JNI的简单使用
    HDFS集群balance(2)-- 架构概览
    [置顶] 我的Android进阶之旅------>介绍一款集录制与剪辑为一体的屏幕GIF 动画制作工具 GifCam
    HDFS集群balance(3)-- 架构细节
    项目总结——深入浅出socket网络编程
    HDFS集群balance(4)-- 测试计划
  • 原文地址:https://www.cnblogs.com/qianduanjingying/p/5133366.html
Copyright © 2011-2022 走看看