要判斷乙個物件是不是陣列的方式有多種,這裡我們乙個乙個來分析:
在使用array.isarray方法之前,我們先來普及一下它的作用以及如何使用:
① 作用:它是用於判斷某個物件是否是陣列;
② 使用:語法格式 array.isarray(物件)
下面我們就用乙個小例項來看看它怎麼判斷乙個物件是不是陣列:
function從上面的**我們很容易就可以學到用 array.isarray()方法來判斷,很多人可能覺得,媽呀,太簡單了,然鵝.......array.isarray() 是es5的新特性,它存在相容性問題那如果瀏覽器不支援es5的話,上面這種方式和沒說一樣,接下來我們來分析其他判斷陣列的方式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
很多人這時候會想到,判斷陣列自帶的方法不就可以了嘛?下面我們來寫一段**分析:
functiondog()
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");注意點:這裡的arr1.tostring() 和 obj1.tostring()方法不是同乙個方法,console.log(arr1.tostring());
//a,b,c
var obj1 =
console.log(obj1.tostring());
//[object object]
接下來,我們畫乙個圖來分析他們分別**自哪兒
ⅰ.作用:借用其他物件的方法。
ⅱ.用法:被借物件.方法名.call(借用物件)
這裡也通過乙個小的例項來說明一下 call()方法:
function接下來,我們要判斷乙個陣列,只要證明它的建構函式是array,即 呼叫tostring可以列印出 [object array];由上面的圖可知,我們可以讓 arr1 借用 object.prototype的tostring()方法,實現過程如下:person()
person.prototype.show = function
()
function
boy()
var boy = new
boy();
//需求:讓boy也可以使用show方法來獲得年齡屬性
person.prototype.show.call(boy);
console.log(boy);
//首先測試一下借用能否實現
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...