判斷資料型別的四種方法

2021-09-25 13:03:47 字數 2414 閱讀 1926

typeof

typeof()一般用於判斷基本型別null除外,typeof也可以判斷function , 但判斷array, error, null 這幾個引用型別時對會被typeof判斷為object,所以如果想判斷這幾種資料型別,就不能使用 typeof 了,比較有侷限性

instanceof

instanceof檢測某乙個例項是否屬於乙個類

例如:class fn

}let obj = new fn(『nihao』)

console.log(obj instanceof fn) true

判斷obj是否是fn的例項,是則返回true,否則返回 false

,instanceof檢測的是原型,內部機制是通過判斷物件的原型鏈中是否有型別的原型

注意: instanceof 後面一定要是物件型別,並且大小寫不能寫錯

instanceof有個弊端就是,對於number,string, boolean這三種型別只能通過建構函式定義

let num = new number(123);

console.log(num instanceof number);

如果使用

var num = 12

console.log(num instanceof number)則為false,還需要注意,null和undefined都返回false ,這是因為他們的型別就是自己本身,不是object建立出來的他們,所以返回了false

constructor建構函式

例如 :

function fn()

var obj = new fn();

console.log(obj.__proto__);

console.log(fn.prototype)

console.log(obj.constructor == fn)

var num = 123

console.log(num.constructor==number)

console.log(false.constructor == boolean)

console.log(.constructor==array)

除了 undefined和null外,其他型別都可以通過constructor屬性來判斷

constructor是prototype物件上的屬性,指向建構函式。例項化物件的__proto__ 等於建構函式的prototype,根據例項物件尋找屬性的順序,若例項 物件上沒有例項屬性或方法時,就去原型鏈上尋找,因此,例項物件也是能使用constructor屬性的

當乙個函式fn被定義時,js引擎會為fn新增prototype屬性,然後在prototype屬性上新增乙個constructor屬性,並讓其執行fn的引用,fn利用原型物件的constructor屬性引用了自身,但是當fn作為建構函式建立物件時,原型上的constructor屬性被遺傳到了新建立的物件上,從原型鏈的角度講,建構函式fn就是新物件的型別,這樣做的意義是,讓物件誕生以後,就具有可追溯的資料型別object.prototype.tostring()

tostring()是 object 的原型方法,呼叫該方法,預設返回當前物件的class,這是乙個內部屬性,其格式返回

let obj = {};

console.log(object.prototype.tostring(obj))

//[object object]

var num = 1;

console.log(object.prototype.tostring.call(num))

//[object number]

console.log(object.prototype.tostring.call(undefined))

//[object undefined]

console.log(object.prototype.tostring.call(document))

//[object htmldocument]

封裝乙個獲取變數準確型別的函式

var obj = new date()

function gettype(obj)

// 如果不是 object型別的資料,直接用typeof判斷出來『

//如果是object型別的資料,準確判斷型別必須使用object.prototype.tostring().call(obj)的方式才能判斷

return object.prototype.tostring.call(obj).replace(/^\[object (\s+)\]$/, '$1')

}console.log(gettype(obj))

判斷資料型別的四種方法(Marksheng)

typeof typeof 一般用於判斷基本型別null除外,typeof也可以判斷function 但判斷array,error,null 這幾個引用型別時對會被typeof判斷為object,所以如果想判斷這幾種資料型別,就不能使用 typeof 了,比較有侷限性 instanceof inst...

js的資料型別以及判斷型別的四種方法

四種判斷型別的方法 null 表示定義為空 undefined 表示未定義 string 字串 number 特殊的兩個符號 nan和infinity isnan 判斷乙個數是否為無窮大,nan和任何數都不相等,包括它本身。parseint p1,p2 p1為字串,如果不是則轉換為字串後再進行處理。...

判斷js資料型別的四種方法和原理

怎麼去判斷乙個資料屬於哪個資料型別,這個是很常見的操作,我們一般都會想到typeof和instanceof這兩個常見的方法,但有時候這兩種方法並不能滿足我們的需求。那讓我們來看一下都有哪些可以判斷資料型別的方法吧。1.typeof 這個方法很常見,一般用來判斷基本資料型別,如 string,numb...