首頁  >  文章  >  web前端  >  javascript中typeof操作符和constucor屬性檢測_javascript技巧

javascript中typeof操作符和constucor屬性檢測_javascript技巧

WBOY
WBOY原創
2016-05-16 16:12:521169瀏覽

*#type.js

複製程式碼程式碼如下:

函數 Person(姓名, 年齡) {
 this.name = 名稱;
 this.age = 年齡;
}
var d = {an: '物件'};
var a = ['蘋果', '香蕉'];
var f = function() {};
var s = '大衛';
var n = 33;
var b = true;
var o = new Object();
var person = new Person('Mark', 22);
console.log(typeof(d) ': ' d.constructor);
console.log(typeof(a) ': ' a.constructor);
console.log(typeof(f) ': ' f.constructor);
console.log(typeof(s) ': ' s.constructor);
console.log(typeof(n) ': ' n.constructor);
console.log(typeof(b) ': ' b.constructor);
console.log(typeof(o) ': ' o.constructor);
console.log(typeof(person) ': ' person.constructor);

運行$node type.js得

複製程式碼程式碼如下:

物件:   function Object() { [本機程式碼] }
物件:   function Array() { [本機程式碼] }
函數: function Function() { [原生程式碼] }
字串:   function String() { [本機程式碼] }
數字:   function Number() { [本機程式碼] }
布林值: function Boolean() { [本地程式碼] }
物件:   function Object() { [本機程式碼] }
物件:   function Person() { [本機程式碼] }

可見,使用typeof操作符和constucor屬性檢測物件類型傳回值是存在差異的。

如果變數是數組,typeof運算子回傳object,建構子屬性回傳Array;
如果變數是建構函數對象,typeof操作符會傳回對象,建構子屬性會傳回該建構子
每個變數都有其建構屬性,該屬性不單一提供了這個是否是對象,也提供了這個物件是什麼類型的對象。 總之,建構函數屬性保存了一個指向物件的建構函數,無論是自訂的還是原生類型的物件。

有一點要注意的是,不同的瀏覽器對 typeof 運算子偵測正規表示式會有所不同,IE 和 Firefox 會回傳「object」。

好了,今天的內容就先到這裡了,小夥伴們如有疑問,就在下方留言吧。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn