1.typeof
typeof是乙個操作符,其右側跟乙個一元表示式,並返回這個表示式的資料型別。返回的結果用該型別的字串(全小寫字母)形式表示,包括number,string,boolean,undefined,object,function,symbol等。
複製**
typeof 「」; //string
typeof 1; //number
typeof false; //boolean
typeof undefined; //undefined
typeof function(){}; //function
typeof {}; //object
typeof symbol(); //symbol
typeof null; //object
typeof ; //object
typeof new date(); //object
typeof new regexp(); //object
複製**
2.instanceof
instanceof用來判斷a是否為b的例項,表示式為:a instanceof b,如果a是b的例項,則返回true,否則返回false。instanceof檢測的是原型,內部機制是通過判斷物件的原型鏈中是否有型別的原型。
{} instanceof object; //true
instanceof array; //true
instanceof object; //true
「123」 instanceof string; //false
new string(123) instanceof string; //true
我們可以用下面的**實現instanceof。
複製**
function instance(left,right)
if (proto === prototype)
proto = proto.proto;}}
console.log(instance({},object)); //true
console.log(instance(,number)); //false
複製**
3.constructor
當乙個函式f被定義時,js引擎會為f新增prototype原型,然後在prototype上新增乙個constructor屬性,並讓其指向f的引用,利用原型物件的constructor屬性引用了自身,當f作為建構函式建立物件時,原型上的constructor屬性被遺傳到了新建立的物件上,從原型鏈角度講,建構函式f就是新物件的型別。這樣做的意義是,讓物件誕生以後,就具有可追溯的資料型別。
4.object.prototype.tostring()
tostring()是object的原型方法,呼叫該方法,預設返回當前物件的[[class]]。這是乙個內部屬性,其格式為[object ***],其中***就是物件的型別。
封裝乙個準確判斷資料型別的函式
複製**
function gettype(obj)
return object.prototype.tostring.call(obj).replace(/^[object (\s+)]$/, 『$1』);
}
js的資料型別以及判斷型別的四種方法
四種判斷型別的方法 null 表示定義為空 undefined 表示未定義 string 字串 number 特殊的兩個符號 nan和infinity isnan 判斷乙個數是否為無窮大,nan和任何數都不相等,包括它本身。parseint p1,p2 p1為字串,如果不是則轉換為字串後再進行處理。...
判斷資料型別的四種方法
typeof typeof 一般用於判斷基本型別null除外,typeof也可以判斷function 但判斷array,error,null 這幾個引用型別時對會被typeof判斷為object,所以如果想判斷這幾種資料型別,就不能使用 typeof 了,比較有侷限性 instanceof inst...
判斷js資料型別的四種方法和原理
怎麼去判斷乙個資料屬於哪個資料型別,這個是很常見的操作,我們一般都會想到typeof和instanceof這兩個常見的方法,但有時候這兩種方法並不能滿足我們的需求。那讓我們來看一下都有哪些可以判斷資料型別的方法吧。1.typeof 這個方法很常見,一般用來判斷基本資料型別,如 string,numb...