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