Vue——获取对象类型

相比于传统的 jQuery,vue 更加关注对象的类型,那么我们该如何判断一个对象的类型呢?

 

推荐采用下列写法,typeof 和 isPrototypeOf() 同时使用,确保任何情况下都不会出现问题。

    /**
     * 判断是不是字数字
     *
     * @param obj {*} 需要判断的值
     * @returns {boolean}
     */
    Layers.prototype.isNumber = function (obj) {
        return typeof obj === 'number' || Number.prototype.isPrototypeOf(obj);
    };

 

简单地说:

typeof 为 object 的对象(可以理解为 new 出来的对象),要用 isPrototypeOf() 进行判断;

基础数据类型,类似于number、string、undefined、null、boolean,要用 typeof。

需要注意,基础数据类型都是可以 new 出来的,“new出来的” 和 “直接声明的”,判断方式是完全不同的(详见下列代码)。

    {
        let val = new Number(3);

        // true
        let ret1 = Number.prototype.isPrototypeOf(val);
        // false
        let ret2 = typeof val === 'number';
        console.log(ret1);
        console.log(ret2);
    }
    {
        let val = 3;

        // false
        let ret1 = Number.prototype.isPrototypeOf(val);
        // true
        let ret2 = typeof val === 'number';
        console.log(ret1);
        console.log(ret2);
    }

 

 

那么,如何判断两个对象类型是否一致呢?直接使用连等号即可。

    let val1 = Object.getPrototypeOf(new Date());
    let val2 = Object.getPrototypeOf(new Date());

    console.log(val1 === val2);

 

posted on 2022-07-05 15:45  疯狂的妞妞  阅读(1637)  评论(0编辑  收藏  举报

导航