標籤:target logs 適用於 reg 函數 cti strong 支援 html
本文主要針對 Null,ExpReg,Array,Date這一些typeof函數辨別不了的對象;
順便貼上一篇關於typeof的理解:http://www.cnblogs.com/chaky/p/7284163.html
首先,辨別物件類型的方法:
1、instanceof(是否...的執行個體) 返回true or false
我們可以用它來辨別 ExpReg Array Date類型的對象 不適用於null
2、constructor //原型對象裡的構造器指向; 不支援null識別
這裡有一處不解的是:
Object指向構造器是Function
而他原型裡的construction指向的是 叫Object的建構函式
3、isArray 專門用於數組識別 (Array對象特有方法,不被子例 ‘繼承‘ );
4、String() 區分null 和 undefined //該函數底層實現應有全等比較符
5、根據物件類型特性判斷屬於是哪種對象;
有3種類型 Array String NodeList;
其中他們都有 length屬性;
forEach只有 Array和NodeList有;
Array有concat,NodeList沒有
通過特性的辨別我們就可以區分出3種屬性類型;
6、萬用辨別類型的方法,原理是通過 toString這方法;//轉載,非原創
var is = function (obj,type) {
return (type === "Null" && obj === null) ||
(type === "Undefined" && obj === void 0 ) ||
(type === "Number" && isFinite(obj)) || Object.prototype.toString.call(obj).slice(8,-1) === type;
}
------------------------如果有更好的辨別方法歡迎留言!--------------------------
js辨別對象的類型