前端资料

ES6新数据类型 Symbol .

js变量提升函数提升

js this

js 原型及原型链理解

new做了什么

let obj={};
obj.proto=构造函数.prototype;
构造函数.call(obj);
return obj;

深拷贝浅拷贝.

第一种 递归调用

function copy( sourceObj , c) {
var c = c || ( Array.isArray(sourceObj) ? [ ] : {} );
for (var i in sourceObj) {
if (typeof sourceObj[i] === 'object') {
c[i] = Array.isArray(sourceObj[i]) ? [] : {};
copy (sourceObj[i], c[i]);
} else {
c[i] = sourceObj[i];
}
}
return c;
}
var arrayA = [1,2,3,4,5];
var obj = {name:'Alex'};
arrayA.push(obj)
var arrayB = [];
copy(arrayA,arrayB);
arrayB[5].name = 'Tom'
console.log(arrayA);// [1, 2, 3, 4, 5, "Alex"]
console.log(arrayB);// [1, 2, 3, 4, 5, "Tom"]

第二种 JSON对象的parse和stringify

function deepClone(obj){
let _obj = JSON.stringify(obj),
objClone = JSON.parse(_obj);
return objClone
}
let a=[0,1,[2,3],4],
b=deepClone(a);
a[0]=1;
a[2][0]=1;
console.log(a,b);

第三种 JQ的extend方法

$.extend( [deep ], target, object1 [, objectN ] )

deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝

target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。

object1 objectN可选。 Object类型 第一个以及第N个被合并的对象。

let a=[0,1,[2,3],4],
b=$.extend(true,[],a);
a[0]=1;
a[2][0]=1;
console.log(a,b);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容