js面试题

Posted wangxinyufarly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js面试题相关的知识,希望对你有一定的参考价值。

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.采用递归的方法

 

 

 

以上是关于js面试题的主要内容,如果未能解决你的问题,请参考以下文章

2021前端面试题-JS篇

淘宝网前端开发面试题--JS 面试题

尝试解析js面试题

js面试题

JS面试题

前端面试题 之 JavaScript