js的陣列和物件的多種"複製"和"清空", 以及區分JS陣列和物件的方法
一.陣列清空與複製方法
1.陣列清空的方法
var a = [1,2,3]; a.length = 0;//方法1 a.splice(0, a.length);//方法2
2.陣列複製方法
var a = [1,2,3]; a.slice(0)
二.物件清空與複製方法
1.判斷物件是否為空
Object.key.length==0//為空ES6
2.物件複製
(1)萬能辦法
function clone(obj){ let temp = null; if(obj instanceof Array){ temp = obj.concat(); }else if(obj instanceof Function){ //函式是共享的是無所謂的,js也沒有什麼辦法可以在定義後再修改函式內容 temp = obj; }else{ temp = new Object(); for(let item in obj){ let val = obj[item]; temp[item] = typeof val == 'object'?clone(val):val; //這裡也沒有判斷是否為函式,因為對於函式,我們將它和一般值一樣處理 } } return temp; }
(2)JSON物件序列化方法, 弊端: 不能複製函式
JSON.parse(JSON.stringify(obj))
三.判斷是否為陣列和物件的方法
1.toString方法
Object.prototype.toString.call(array) === '[object Array]'//true Object.prototype.toString.call(obj) === '[Object Object]'//true
2.constructor方法
obj.constructor === Array//true obj.constructor === Object //true
3.instanceof方法, 弊端: 區分不開物件或者陣列
obj instaceof Object//true array instaceof Object// true
4.isArray方法
Array.isArray([1,2,3])//true
以上是我認為無懈可擊的方法, 其他還有很多, 需要請留言
想了解原生js的"陣列"和"物件"的方法, 請點選JavaScript教程-阮一峰