• 数据类型检测及封装


    数据类型检测

    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>
  • 相关阅读:
    SQL 高级查询(层次化查询,递归)
    IntelliJ IDEA添加注释常用的快捷键
    java配置环境变量
    Python单例模式的4种实现方法 ++ redis pool的一种单例实现方式
    MYSQL安装配置文件my-small.ini、my-medium.ini、my-large.ini、my-huge.ini文件的作用
    flask中使用flask-sqlalchemy
    Python向Mysql写入时间类型数据
    [慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
    Cocos2d-x 3.2 创建新应用
    In-App Purchase Programming Guide----(六) ----Working with Subscriptions
  • 原文地址:https://www.cnblogs.com/CCxi/p/9471475.html
Copyright © 2020-2023  润新知