javascript具有两大数据类型,基本数据类型和引用数据类型。
- 基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol (ES6新增)六 种。
- 引用数据类型只有Object一种,主要包括对象、数组和函数。
javascript 中使用typeof 只能区分基本数据类型,这里引出Object.prototype.toString.call()区分引用数据类型。
深拷贝的方法如下:
function deepClone(arr) {
if(typeof arr !== 'object') return arr;
//判断 是要深拷贝 对象 还是 数组
var o = Object.prototype.toString.call(arr) === '[object Array]' ? [] : {};
for(let k in arr) {
if(typeof arr[k] === 'object') {
o[k] = deepClone1(arr[k]);
} else {
o[k] = arr[k];
}
}
return o;
}
Object.prototype.toString方法理解:
Object对象和它的原型链上各自有一个toString()方法,第一个返回的是一个函数,第二个返回的是值类型。
Object.toString()//"function Object() { [native code] }"
Object.prototype.toString()//"[object Object]"
Object.toString.call(Array)//"function Array() { [native code] }"
Object.prototype.toString.call(Array)//"[object Function]"
参考文章:
https://blog.csdn.net/u014481405/article/details/107914835



