首頁  >  文章  >  web前端  >  JS中的判斷類型

JS中的判斷類型

不言
不言原創
2018-04-10 11:38:334067瀏覽

這篇文章給大家分享的內容是關於JS中的判斷類型,具有一定的參考價值,有需要的朋友可以參考一下

在JS裡判斷類型一般有四種方法
一,
typeof:這個方法大家都知道,有很多型別都判斷不出來的,不推薦
二,
constructor:每個函數都會自動擁有一個prototype屬性。這個屬性是一個對象,而這個物件包含了唯一一個不可枚舉的屬性constructor。 constructor屬性的值是函數對象,這個函數就是建構子;

function Aaa(){};
var a1 = new Aaa();

a1.constructor 所指向的就是Aaa();這個建構子

所以我們可以用它來做型別判斷

var arr = [];
arr.constructor == Array  這樣就可以判斷是否是陣列了,其他型別也是一樣的


instanceof : 判斷一個物件與建構函式是否在一個原型鏈上;

function Aaa(){};
var o = new Aaa();

o instanceof Array  : 檢視o和Array是否在一個原型鏈上,顯然o是Aaa建構子下的實例,所以得到false;

o instanceof obj.prototype 得到的是true;因為所以的物件都是繼承obj.prototype

四,
利用toString()方法: Object.prototype.toString.call(o);
o :是一個物件實例,上述會傳回'[Object Array]' 這樣類型的字串,可以根據這個字串來判斷資料型別

總結,第四總方法是最可靠的,二,三方法一般不會有問題,但是在有iframe的時候就會出錯的,一最不靠譜

在JS裡判斷類型一般有四種方法
一,
typeof:這個方法大家都知道,有很多型別都判斷不出來的,不推薦
二,
constructor:每個函數都會自動擁有一個prototype屬性。這個屬性是一個對象,而這個物件包含了唯一一個不可枚舉的屬性constructor。 constructor屬性的值是函數對象,這個函數就是建構子;

function Aaa(){};
var a1 = new Aaa();

a1.constructor 所指向的就是Aaa();這個建構子

所以我們可以用它來做型別判斷

var arr = [];
arr.constructor == Array  這樣就可以判斷是否是陣列了,其他型別也是一樣的


instanceof : 判斷一個物件與建構函式是否在一個原型鏈上;

function Aaa(){};
var o = new Aaa();

o instanceof Array  : 檢視o和Array是否在一個原型鏈上,顯然o是Aaa建構子下的實例,所以得到false;

o instanceof obj.prototype 得到的是true;因為所以的物件都是繼承obj.prototype

四,
利用toString()方法: Object.prototype.toString.call(o);
o :是一個物件實例,上述會傳回'[Object Array]' 這樣類型的字串,可以根據這個字串來判斷資料型別

總結,第四總方法是最可靠的,二,三方法一般不會有問題,但是在有iframe的時候就會出錯的,一最不靠譜

相關推薦;

##js判斷是PC端還是行動端

js判斷是PC端還是行動裝置#

以上是JS中的判斷類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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