zoukankan      html  css  js  c++  java
  • 数据类型检测及封装

    数据类型检测

    1、typeOf;返回一个字符串

    1.局限性: typeof null –>”object”
    2.只能检测通过字面量方式创建的基本数据类型值,不能细分对象数据类型下具体的数据类型;

    2、instanceOf:检测当前实例是否属于某个实例的方法

    局限性:只要当前类在当前的实例原型链上,都返回true
    var ary=[];
    console.log(ary instanceOf Array);//true
    function fn(){}
    console.log(fn instanceOf Function);//true
    console.log(fn instanceOf Object);//true
    console.log(fn instanceOf Function);//false

    3、constructor :构造函数

    局限:一旦原型指向发生改变,constructor会指向改变后的类
    var ary=[];
    console.log(ary.constructor === Object);//false
    var obj={};
    console.log(obj.constructor === Object);//true
    var num=1;
    console.log(num.constructor === Object);//true
    在浏览器中,进制调用null和undefined这个类

    4、object.prototype.toString.call()

    object.prototype.toString:返回值是一个字符串,“【Object 类】”
    一般用于区分对象、数组、正则
    console.log(Object.prototype.toString.call(1));// "[object Number]"
    console.log(Object.prototype.toString.call("abc"));// "[object String]"
    console.log(Object.prototype.toString.call(true));// "[object Boolean]"
    console.log(Object.prototype.toString.call(null));// "[object Null]"
    console.log(Object.prototype.toString.call(undefined));// "[object Undefined]"
    console.log(Object.prototype.toString.call({}));// "[object Object]"
    console.log(Object.prototype.toString.call([]));// "[object Array]"

    数据类型检测的封装

    object.prototype.toString.call()
    <script>
    // 检测数据类型的方法
    //isNumber(12)//--> true
    //isObject({})// true
    //isArray()
    (function () {
    var obj = {
    isNumber:"Number",
    isString :"string",
    isBoolean:"Boolean",
    isNull : "Null",
    isUndefined:"Undefined",
    isObject:"Object",
    isArray:"Array"
    }
    var checkType = {};
    for(var key in obj){
    // 遍历obj;key : 是obj中的属性名
    checkType[key] = (function () {
    // 每循环一次,把当前key对应的属性值存储到当前不销毁的作用域下;
    // 利用了闭包存储值的作用;
    var curType = obj[key];
    // 实例创建正则;初始化checkType执行;字面量方式创建的正则不能传变量;所以只可以采用实例创建方式
    var reg = new RegExp("\[object "+curType+"\]");
    console.log(reg);
    return function (val) {
    // 通过curType创建的正则;
    return reg.test(Object.prototype.toString.call(val)); // "[object Number]"
    }
    })();
    }
    window.checkType = checkType;
    })()
     
    //console.log(checkType);
    console.log(checkType.isNumber(18));
    console.log(checkType.isNumber("123"));
    console.log(checkType.isObject("123"));
    console.log(checkType.isObject({}));
     
    var name = "aa";
    //var reg = /name/
    //console.log(new RegExp(""+name));
    //console.log(new RegExp("\d"));
     
    var reg = /${}/;
    console.log(reg);
    </script>
  • 相关阅读:
    springboot -jar部署
    base64前端对登陆密码编码,后端解码
    数字择优( 计算一个数与一组数字中的哪一个数字大小最接近)
    求两个数组的最小差值
    url.openConnection()远程获取图片缺失
    HttpURLConnection 用法详解
    Eureka集群入门搭建
    Django基础(五)- form组件及django序列化
    django基础(四)- 分页组件
    Django基础(四)-cookie与session
  • 原文地址:https://www.cnblogs.com/CCxi/p/9471475.html
Copyright © 2011-2022 走看看