掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
主要用于判斷基本數(shù)據(jù)類型 。使用方式:typeof(表達(dá)式)和typeof 變量名,第一種是對表達(dá)式做運(yùn)算,第二種是對變量做運(yùn)算。 typeof運(yùn)算符的返回類型為字符串,值包括如下幾種:

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、伊犁網(wǎng)站維護(hù)、網(wǎng)站推廣。
示例如下:
console.log(typeof a); //'undefined'
console.log(typeof(true)); //'boolean'
console.log(typeof '123'); //'string'
console.log(typeof 123); //'number'
console.log(typeof NaN); //'number'
console.log(typeof null); //'object'
var obj = new String(); console.log(typeof(obj)); //'object'
var fn = function(){}; console.log(typeof(fn)); //'function'
console.log(typeof(class c{})); //'function'
typeof的不足之處:
typeof運(yùn)算符用于判斷對象的類型,但是對于一些創(chuàng)建的對象,它們都會返回'object',有時我們需要判斷該實(shí)例是否為某個對象的實(shí)例,那么這個時候需要用到instanceof運(yùn)算符。
用于引用數(shù)據(jù)類型的判斷。所有引用數(shù)據(jù)類型的值都是Object的實(shí)例。目的是判斷一個對象在其原型鏈上是否存在構(gòu)造函數(shù)的prototype屬性。 用法:
variable instanceof constructor
示例如下:
// example
var arr = [];
由于:
1. arr.constructor === Array
2. arr.__proto__ === Array.prototype
3. arr.__poto__.proto__ === Object.prototype
所以, 以下都返回true
1. arr instanceof arr.constructor(Array)
2. arr instanceof arr.__proto__.constructor(Array)
3. arr instanceof arr.__proto__.__poto__.constructor(Object)
如果你了解原型鏈的話,你很快就會得出一些結(jié)論:
1. 所有對象 instanceof Object 都會返回 true
2. 所有函數(shù) instanceof Function 都會返回 true
總結(jié):
instanceof不僅能檢測構(gòu)造對象的構(gòu)造器,還檢測原型鏈。instanceof要求前面是個對象,后面是一個構(gòu)造函數(shù)。而且返回的是布爾型的,不是true就是false。
Array.isArray()可以用于判斷數(shù)組類型,支持的瀏覽器有IE9+、FireFox 4+、Safari 5+、Chrome; 兼容實(shí)現(xiàn):
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}示例如下:
// 1.
Array.isArray([1, 2, 3, 4]); // --> true
// 2.
var obj = {
a: 1,
b: 2
};
Array.isArray(obj); // --> false
// 3.
Array.isArray(new Array); // --> true
//4.
Array.isArray("Array"); // --> false
isArray是一個靜態(tài)方法,使用Array對象(類)調(diào)用,而不是數(shù)組對象實(shí)例。其中Array.prototype 也是一個數(shù)組,Array.isArray 優(yōu)于 instanceof。
判斷某個對象值屬于哪種內(nèi)置類型, 最靠譜的做法就是通過Object.prototype.toString方法。object.prototype.toString()輸出的格式就是[object 對象數(shù)據(jù)類型]。
示例如下:
console.log(Object.prototype.toString.call("jerry"));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
function Person(){};
console.log(Object.prototype.toString.call(new Person));//[object Object] 
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流