如何判斷乙個物件是不是數值

2022-09-12 17:51:11 字數 3234 閱讀 7829

要判斷乙個物件是不是陣列的方式有多種,這裡我們乙個乙個來分析:

在使用array.isarray方法之前,我們先來普及一下它的作用以及如何使用:

① 作用:它是用於判斷某個物件是否是陣列;

② 使用:語法格式   array.isarray(物件)

下面我們就用乙個小例項來看看它怎麼判斷乙個物件是不是陣列:

function

person(name)

var p1 = new person("張三");

console.log(array.isarray(p1)); //false

var arr1 =["zhang","li","zhou","wu","zheng","wang"];

console.log(array.isarray(arr1)); //trueconsole.log("-----------------");

var arr2 = new array("abc");

console.log(array.isarray(arr2)); //true

從上面的**我們很容易就可以學到用  array.isarray()方法來判斷,很多人可能覺得,媽呀,太簡單了,然鵝.......array.isarray()  是es5的新特性,它存在相容性問題那如果瀏覽器不支援es5的話,上面這種方式和沒說一樣,接下來我們來分析其他判斷陣列的方式

很多人這時候會想到,判斷陣列自帶的方法不就可以了嘛?下面我們來寫一段**分析:

function

dog()

var dog = new

dog();

var arr1 = new array("a","b","c");

console.log(dog.name);

//阿黃

console.log(arr1); //

["a", "b", "c"]

//1 判斷 dog 和arr1哪個是陣列

if (typeof dog.push == "function")

if (typeof arr1.push =="function")

//2 這樣看好像滿足了,但是如果我們給dog的原型物件新增乙個 push方法,會出現什麼現象呢?

dog.prototype.push = function

() console.log("-----------------------");

//3 再來 判斷 dog 和arr1哪個是陣列

分析完了,我們就知道這個方法是不可行的,因為它太不嚴謹了,要是你這樣寫,你合作的小夥伴會很不高興的.....

像之前一樣,我們先來普及一下tostring()方法和call()方法:

ⅰ. tostring()

ⅰ.作用:tostring() 方法可把乙個邏輯值轉換為字串,並返回結果。

❶ 如果呼叫tostring的是 非 object型別的物件    typeof 呼叫者.tostring()  都是string型別

❷ 如果呼叫tostring的是 object建構函式建立的例項物件        呼叫者.tostring()   輸出的是 [object object],它表示 [型別,建構函式]

這裡我們用乙個例子來說明一下tostring()

var arr1 = new array("a","b","c");

console.log(arr1.tostring());

//a,b,c

var obj1 =

console.log(obj1.tostring());

//[object object]

注意點:這裡的arr1.tostring() 和  obj1.tostring()方法不是同乙個方法,

接下來,我們畫乙個圖來分析他們分別**自哪兒

ⅰ.作用:借用其他物件的方法。

ⅱ.用法:被借物件.方法名.call(借用物件)

這裡也通過乙個小的例項來說明一下 call()方法:

function

person()

person.prototype.show = function

()

function

boy()

var boy = new

boy();

//需求:讓boy也可以使用show方法來獲得年齡屬性

person.prototype.show.call(boy);

console.log(boy);

接下來,我們要判斷乙個陣列,只要證明它的建構函式是array,即 呼叫tostring可以列印出 [object  array];由上面的圖可知,我們可以讓 arr1 借用 object.prototype的tostring()方法,實現過程如下:

//

首先測試一下借用能否實現

var arr1 = new array("a","b","c");

console.log(arr1.tostring());

//a,b,c

var obj1 =

console.log(obj1.tostring());

//[object object]

console.log(object.prototype.tostring.call(arr1));

//[object array]

console.log("-----------------------");

//做相容性處理

//1 判斷瀏覽器是否支援 array.isarray方法,如果不支援,那麼就給他設定乙個array.isarray方法 ;利用我們自己寫的這個方法來判斷

if(array.isarray != "function")

}

如何判斷乙個js物件是不是Array

1.instance of 2 constructor 3 isarray 1 var a new array a instanceof array true 2 var a new array a.constructor array true 3 對支援isarray的瀏覽器 var a new ...

如何判斷乙個js物件是不是Array

1.instance of 2 constructor 3 isarray 1 var a new array a instanceof array true 2 var a new array a.constructor array true 3 對支援isarray的瀏覽器 var a new ...

判斷乙個物件是不是陣列的方法

判斷乙個物件是不是陣列的方法 1 typeof 無法判斷 只能判斷原始型別的值和函式 2 isprototypeof 判斷父及物件 可檢查整個原型鏈 可能繼承自陣列 console.log array.prototype.isprototypeof 是陣列 不是陣列 console.log arra...