vue - 获取对象类型

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

为了更高的健壮性,推荐 typeof 和 isPrototypeOf() 同时使用,确保任何情况下都不会出现问题。

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

按现在的开发环境,只需要判断 typeof obj === 'number'

如果 new Number(),会出现代码警告,因此只需要保持良好的习惯即可。

简单地说:

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

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

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

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

    {
        let val = new Number(3);

        console.log(val + 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   疯狂的妞妞  阅读(1731)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示