码迷,mamicode.com
首页 > Web开发 > 详细

js面试题

时间:2019-11-09 23:44:17      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:OLE   出现   引用   指针   str   sign   空间   引入   直接   

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面试题

标签:OLE   出现   引用   指针   str   sign   空间   引入   直接   

原文地址:https://www.cnblogs.com/wangXinYuFarly/p/11828170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!