js中typeof和instanceof用法區別

2022-08-30 07:18:10 字數 1744 閱讀 9210

typeof和instanceof都可以用來判斷變數,它們的用法有很大區別:

typeof會返回乙個變數的基本型別,只有以下幾種:number,boolean,string,object,undefined,function;例:

alert(typeof(1));//number

alert(typeof("abc"));//string

alert(typeof(true));//boolean

alert(typeof(m));//undefined

如果我們想要判斷乙個變數是否存在,可以使用typeof:(不能使用if(a) 若a未宣告,則報錯)

if(typeof a != 'undefined');

alert(a instanceof object);  //true

var b = ;

alert(b instanceof array);  //true

需要注意的是,instanceof只能用來判斷物件和函式,不能用來判斷字串和數字等,如:

var b = '123';

alert(b instanceof string);  //false

alert(typeof b);  //string

var c = new string("123");

alert(c instanceof string);  //true

alert(typeof c);  //object

另外,用instanceof可以判斷變數是否為陣列

alert(typeof '111'); // "string" 

alert(typeof 22); // "number" 

alert(typeof a); // "undefined" 

alert(typeof undefined); // "undefined" 

alert(typeof ); // "object"

但是這個方法不適用於來判斷陣列,因為不管是陣列還是物件,都會返回object,這就需要我們需求其他的方法。

有幾種方法可以拿來判斷:

1、constructor屬性

這個屬性在我們使用js系統或者自己建立的物件的時候,會預設的加上,例如:

var arr = [1,2,3];  //建立乙個陣列物件

arr.prototype.constructor = array;  //這一句是系統預設加上的

所以我們就可以這樣來判斷:

var arr = [1,2,3,1]; 

alert(arr.constructor === array);   // true

2、instanceof

instanceof是檢測物件的原型鏈是否指向建構函式的prototype物件的,所以我們也可以用它來判斷:

var arr = [1,2,3]; 

alert(arr instanceof array);   // true

判斷陣列終極解決方案

var arr = [1,2,3]; 

function isarrayfn(obj)else{                     //否則使用tostring方法

return object.prototype.tostring.call(obj) === "[object array]"; 

alert(isarrayfn(arr));// true

自己不官方的理解typeof和instanceof

一 typeof typeof 的 運算數未定義,返回 的 就是 undefined 運算數為數字 typeof x number 字串 typeof x string 布林值 typeof x boolean 物件,陣列和null typeof x object 函式 typeof x funct...

js中typeof和instanceof用法區別

typeof和instanceof都可以用來判斷變數,它們的用法有很大區別 typeof會返回乙個變數的基本型別,只有以下幾種 number,boolean,string,object,undefined,function 例 alert typeof 1 number alert typeof a...

在js中 typeof和instanceof的區別

typeof與instanceof都是用來判斷資料型別的,返回值是否為空等情況,但是他們具體的情況該如何區分?1.首先兩者返回的值不同。typeof返回的值是乙個字串,而,instanceof返回的是布林型別的值,判斷是true或者false。typeof返回的型別有 number,boolean,...