js面试题

十年热恋 提交于 2019-12-04 02:18:13

1.深拷贝和浅拷贝的区别?

Js有两种数据类型 基本数据类型和引用数据类型 基本数据类型都是按值访问的,我们可以直接操作保存在变量中的实际的值。而引用类型如Array,我们不能直接操作

对象的堆内存空间。引入类型的值都是按引用访问的,即保存在变量对象中的一个地址,该地址与堆内存的实际值相关联。

浅拷贝:只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;

深拷贝:复制并创建一个一模一样的对象,不共享内存,修改新对象,旧对象保持不变。

Object.assign()

Object.assign()是一种可以对非嵌套对象进行深拷贝的方法,如果对象中农出现嵌套情况,那么其对被嵌套对象的行为就成立普通的浅拷贝。

let foo = {

    a : 1,

    b : 2,

    c : {

       d : 1,

    }

}

let bar = {};

Object.assign(bar,foo);

foo.a++;

foo.a === 2 //true

bar.a === 1 //true

foo.c.d++;

foo.c.d === 2 //true

bar.c.d === 2 //true

3.转成JSON

用JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象。

var obj1 = { body: { a : 10} };

var obj2 = JSON.parse(JSON.stringify(obj1));

obj2.body.a = 20;

console.log(obj1); //

4.采用递归的方法

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!