檢測(cè)一個(gè)對(duì)象是否存在:
if (typeof myObj === 'undefined') {
var myObj = {};
}
可用于檢測(cè)對(duì)象類(lèi)型的運(yùn)算符:
- typeof
主要對(duì)基礎(chǔ)數(shù)據(jù)類(lèi)型的判斷氢卡,對(duì)引用類(lèi)型都會(huì)返回object - instanceof
左邊的運(yùn)算符必須是一個(gè)對(duì)象凤价,右邊的暈算數(shù)是對(duì)象類(lèi)的名字或者構(gòu)造函數(shù) - 對(duì)象的constructor屬性
每個(gè)對(duì)象都有constructor屬性魂仍,起引用了該對(duì)象的構(gòu)造函數(shù)
function isArray (arr) {
return arr instanceof Array;
}
也可以通過(guò)
function isArray (arr) {
return typeof arr === 'object' && arr.constructor === Array;
}
但是instanceof在某些IE版本中無(wú)效,且同一個(gè)頁(yè)面中的不同框架(ifame)不共享prototype兰怠,所以最佳實(shí)踐是:
if (typeof Array.isArray === 'undefined') {
Array.isArray = function (arr) {
return Object.prototpe.toString.call(arr) === '[object Array]'
}
}
一個(gè)用于獲取對(duì)象類(lèi)型名的通用函數(shù):
function __getClass (object) {
return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]&/)[1];
}
通過(guò)拓展畦攘,可以編寫(xiě)一個(gè)檢測(cè)的函數(shù):
function is (type, object) {
return type === __getClass(object);
}