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。

有点类似于 java 代码,javascript 中,基础类型也有对应的封装类型,比如数字有个对应的 Number 对象。

“new 出来的 Number” 和 “直接声明的数值”,判断类型的方式是完全不同的,代码如下。

    {
    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  疯狂的妞妞  阅读(1714)  评论(0编辑  收藏  举报

导航