跳到主要内容

1 篇博文 含有标签「typeof」

查看所有标签

· 阅读需 3 分钟

判断类型、构造函数、对象属性等,记录到一起,方便记忆学习。

typeof

操作符返回一个字符串,表示未经计算的操作数的类型,其实就是判断参数是什么类型的实例。

一般返回以下几种结果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。

console.log(typeof 123) //number
console.log(typeof (1+2)) //number
console.log(typeof NaN) //number
console.log(typeof Number(6)) //number
console.log(typeof Infinity) //number

console.log(typeof "") //string
console.log(typeof "zyw") //string
console.log(typeof (typeof "zyw")) //string

console.log(typeof true) //boolean
console.log(typeof false) //boolean

console.log(typeof {name:'zyw'}) //object
console.log(typeof ['z', 'y', 'w']) //object
console.log(typeof new Date()) //object

console.log(typeof function(){}) //function

console.log(typeof undefined) //undefined
console.log(typeof zyw) //undefined zyw未定义

instanceof

用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置

注意上面数组和对象返回的都是object,这时就需要使用instanceof来判断了。

console.log(['z', 'y', 'w'] instanceof Array) //true

// 定义构造函数
function C(){}
function D(){}
var o = new C();
o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototype
o instanceof D; // false,因为 D.prototype不在o的原型链上
o instanceof Object; // true,因为Object.prototype.isPrototypeOf(o)返回true
C.prototype instanceof Object // true,同上

console.log("zyw" instanceof String) //false
console.log(new String() instanceof String) //true
console.log(new String("zyw") instanceof String) //true
console.log(new Date() instanceof String) //false

console.log(new String("zyw") instanceof Object) //true
console.log({} instanceof Object) //true
console.log(Object.create(null) instanceof Object) //false

console.log(new Date() instanceof Date) //true
console.log(new String() instanceof Date) //false

console.log(new Date() instanceof Object) //true

hasOwnProperty

返回一个布尔值,指示对象自身属性中是否具有指定的属性

o = new Object();
o.prop = 'exists';
function changeO() {
o.newprop = o.prop;
delete o.prop;
}
o.hasOwnProperty('prop'); // 返回 true
changeO();
o.hasOwnProperty('prop'); // 返回 false

Object.prototype.toString.call()

常用于判断浏览器内置对象。

console.log( Object.prototype.toString.call('zyw')) //[object String]
console.log( Object.prototype.toString.call(123)) //[object Number]
console.log( Object.prototype.toString.call(Symbol(123))) //[object Symbol]
console.log( Object.prototype.toString.call(null)) //[object Null]
console.log( Object.prototype.toString.call(undefined)) //[object Undefined]
console.log( Object.prototype.toString.call(function () {})) //[object Function]
console.log( Object.prototype.toString.call({name: 'zyw'})) //[object Object]

Array.isArray()

用来判断对象是否为数组

var arr = ['z', 'y', 'w']
console.log(Array.isArray(arr))//true
var obj = {name: 'zyw'}
console.log(Array.isArray(obj))//false

参考网址:MDN