1樓:泡泡糖
typeof算是最常見的了,使用它會返回一個字串,適合函式物件和基本型別(js中的基本型別:number、string、boolean、null、undefined、object[物件])的判斷。
console.log("測試number:"+typeof 1); console.log("測試string:"+typeof "str");
console.log("測試false:"+typeof false); console.log("測試null:"+typeof null);
console.log("測試undefined:"+typeof undefined); console.
log("測試object:"+typeof new object());
console.log("測試object:"+typeof new array());
console.log("看看typeof nan是啥:"+typeof nan);
console.log("我想看看陣列[1,2,3]型別:"+typeof [1,2,3]);
console.log("看看function是啥:"+typeof function(){});
2樓:奔跑的窩牛的家
如何判斷js中的資料型別:typeof、instanceof、 constructor、 prototype方法比較
如何判斷js中的型別呢,先舉幾個例子:
var a = "iamstring.";
var b = 222;
var c= [1,2,3];
var d = new date();
var e = function();
var f = function();
最常見的判斷方法:typeof
alert(typeof a) ------------> string
alert(typeof b) ------------> number
alert(typeof c) ------------> object
alert(typeof d) ------------> object
alert(typeof e) ------------> function
alert(typeof f) ------------> function
其中typeof返回的型別都是字串形式,需注意,例如:
alert(typeof a == "string") -------------> true
alert(typeof a == string) ---------------> false
另外typeof 可以判斷function的型別;在判斷除object型別的物件時比較方便。
判斷已知物件型別的方法: instanceof
alert(c instanceof array) ---------------> true
alert(d instanceof date)
alert(f instanceof function) ------------> true
alert(f instanceof function) ------------> false
注意:instanceof 後面一定要是物件型別,並且大小寫不能錯,該方法適合一些條件選擇或分支。
根據物件的constructor判斷: constructor
alert(c.constructor === array) ----------> true
alert(d.constructor === date) -----------> true
alert(e.constructor === function) -------> true
注意: constructor 在類繼承時會出錯
eg,function a(){};
function b(){};
a.prototype = new b(); //a繼承自b
var aobj = new a();
alert(aobj.constructor === b) -----------> true;
alert(aobj.constructor === a) -----------> false;
而instanceof方法不會出現該問題,物件直接繼承和間接繼承的都會報true:
alert(aobj instanceof b) ----------------> true;
alert(aobj instanceof b) ----------------> true;
言歸正傳,解決construtor的問題通常是讓物件的constructor手動指向自己:
aobj.constructor = a; //將自己的類賦值給物件的constructor屬性
alert(aobj.constructor === a) -----------> true;
alert(aobj.constructor === b) -----------> false; //基類不會報true了;
通用但很繁瑣的方法: prototype
alert(object.prototype.tostring.call(a) === ‘[object string]’) -------> true;
alert(object.prototype.tostring.call(b) === ‘[object number]’) -------> true;
alert(object.prototype.tostring.call(c) === ‘[object array]’) -------> true;
alert(object.prototype.tostring.call(d) === ‘[object date]’) -------> true;
alert(object.prototype.tostring.call(e) === ‘[object function]’) -------> true;
alert(object.prototype.tostring.call(f) === ‘[object function]’) -------> true;
大小寫不能寫錯,比較麻煩,但勝在通用。
通常情況下用typeof 判斷就可以了,遇到預知object型別的情況可以選用instanceof或constructor方法,簡單總結下,挖個坑,歡迎補充!
js如何判斷變數的資料型別
3樓:匿名使用者
檢測簡單的資料型別的方法
typeof方法用於檢測簡單的資料型別如typeof 12instanceof的例項方法檢測如 instanceof array // true
arr.constructor == array判斷arr的建構函式是否為陣列,如果是則arr是陣列
array.isarray()判斷是否是陣列精確判斷資料型別object.prototype.tostring.call(arr)
4樓:一年孤獨
使用typeof關鍵字, 可以得到資料型別的字串表示(全部為小寫):
var a = 0, b= true, c="text", d = , e=[1,2];
var f = function(){}, h = null, i
if(typeof a === "number") a = a*2;
typeof a; // "number"
typeof b; // "boolean"
typeof c; // "string"
typeof d; // "object"
typeof e; // "object"
typeof f; // "function"
typeof h; // "object"
typeof i; // "undefined"
可以看出對於null, , 返回的型別都是"object", 可進一步判斷:
var o = {};
if(typeof o === "object")else if(array.isarray(o))else
}一般情況下, 我們不需要全面判斷資料型別, 例如往往只要判斷是否為***資料型別, 用以上方法足夠, 但顯然上面的方法在判斷object物件時有點繁瑣, 所以大多數js類庫中提供有擴充套件方法, 這些庫一般採用的方法如下:
object.prototype.tostring.call(100); //"[object number]"
object.prototype.tostring.call('100'); //"[object string]"
object.prototype.tostring.call(undefined); //"[object undefined]"
object.prototype.tostring.call(true); //"[object boolean]"
object.prototype.tostring.call(null); //"[object null]"
object.prototype.tostring.call({}); //"[object object]"
object.prototype.tostring.call(); //"[object array]"
object.prototype.tostring.call(function () ); //"[object function]"
在js中是什麼意思,js中 是什麼意思
東東程式猿 本身沒有意思,jquery的裡面定義過 所以可以用,這就好比,你定義了一個function,寫法如下 function id 這樣你的js 中也可以用類似jquery中的寫法,id 嘿嘿,如果沒有引入jquery,自己這樣定義一個function,其實是很方便的。 jquery裡才有 原...
js中《是什麼運算子, 在js中是什麼運算子,什麼意思
小河魨 移位運算子。左移運算子 右移運算子 先把數字轉換成二進位制,然後根據符號向左向右移動,根據後面的數字決定移動幾位。比如數字8,二進位制是1000,那麼8 2就是1000向左移動二位,變成了100000結果是32.原理,數字在計算機裡面都是用 0000000000001000表示的。把1向左移...
JS中的event event window event什麼意思?求詳解
ie中事件是全域性變數window.event可以隨時拿到 其它瀏覽器必須在引數中傳遞才能獲取事件 其它瀏覽器中預設第一個引數傳遞的是事件,如果你顯示的傳遞了別的引數,這個事件你將無法獲得,所以要相容每個瀏覽器,方法內首先要判斷這個e引數,如果沒有則是ie的判斷 簡單的方法是 e e window....