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);
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!