js深拷贝的三种实现方式

js深拷贝的三种实现方式

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

js深拷贝的三种实现方式

深拷贝是指在复制一个对象时,不仅复制了对象本身,还要递归地复制其所有属性和子属性。在JavaScript中,实现深拷贝有多种方式。下面将介绍三种常见的实现方式。

第一种方式是使用JSON.stringify()和JSON.parse()方法进行深拷贝。这种方法的原理是先将对象转换为字符串形式,再通过解析字符串重新生成一个新的对象。代码示例如下:

js深拷贝的三种实现方式

```

function deepClone(obj) {

js深拷贝的三种实现方式

return JSON.parse(JSON.stringify(obj));

}

```

第二种方式是使用递归来实现深拷贝。该方法通过遍历对象的所有属性,并判断每个属性是否为引用类型,如果是则递归调用自身进行深度复制。代码示例如下:

```

function deepClone(obj) {

if (typeof obj !== 'object' || obj === null) {

return obj;

}

let clone = Array.isArray(obj) ? [] : {};

for (let key in obj) {

if (obj.hasOwnProperty(key)) {

clone[key] = deepClone(obj[key]);

}

}

return clone;

}

```

第三种方式是使用Object.assign()方法进行浅拷贝,并结合递归来实现深拷贝。该方法首先利用Object.assign()对目标对象进行浅拷贝,然后遍历目标对象的所有属性并判断是否为引用类型,如果是则递归调用自身进行深度复制。代码示例如下:

```

function deepClone(obj) {

if (typeof obj !== 'object' || obj === null) {

return obj;

}

let clone = Object.assign({}, obj);

Object.keys(clone).forEach(key => {

clone[key] = deepClone(clone[key]);

});

return clone;

}

```

JavaScript中实现深拷贝的三种方式分别是使用JSON.stringify()和JSON.parse()方法、递归以及Object.assign()方法结合递归。每种方式都有其特点和适用场景,开发者可以根据具体需求选择合适的方式来实现深拷贝。

localstorage和sessionstorage

本文将以localstorage和sessionstorage为中心,介绍它们的特点、用途以及使用方法。

我们来了解一下localstorage。Localstorage是HTML5提供的一种持久化存储方案,它可以在浏览器端存储大量数据,并且不会随着页面刷新或关闭而丢失。这意味着我们可以将用户的个人设置、喜好等信息保存在本地,使得用户下次访问网站时能够保留之前的设置。由于localstorage是基于键值对存储数据的方式,所以它具有很高的读写效率。

接下来是sessionstorage。Sessionstorage也是HTML5提供的一种客户端存储方案,但与localstorage不同之处在于sessionStorage只能在当前会话中保存数据,在用户关闭浏览器标签页或窗口后就会被清除。因此,在使用sessionStorage时需要注意数据是否需要长期保存。

那么如何使用这两种存储方式呢?非常简单!我们只需通过JavaScript代码调用相关API即可实现对localStorage和sessionStorage进行操作。例如:要向localStorage中添加一个键值对可以使用localStorage.setItem(key, value)方法;要获取某个键对应的值可以使用localStorage.getItem(key)方法;如果想删除某个键值对,则可以调用localStorage.removeItem(key)方法等等。同样的,sessionStorage也有类似的API供我们使用。

总而言之,localstorage和sessionstorage是两种非常方便的浏览器端存储方式。它们可以帮助我们在前端开发中保存用户数据、状态等信息,提升用户体验。但需要注意的是,在使用这两种存储方式时要根据实际需求选择合适的方案,并且遵循相关安全规范以保护用户数据。

容器内执行docker命令

在当今的软件开发和部署中,容器技术已经成为一种非常流行的解决方案。而Docker作为最受欢迎的容器平台之一,提供了丰富而强大的命令行工具来管理和操作容器。本文将以执行Docker命令为中心,介绍如何使用这些命令来进行各种操作。

我们需要了解如何运行一个容器。使用Docker run命令可以创建并启动一个新的容器实例。例如,要运行一个名为"my-container"的镜像,只需执行以下命令:

docker run my-container

接下来是查看正在运行的容器列表。通过Docker ps命令可以列出当前正在运行中的所有容器,并显示它们相关信息(如ID、名称、状态等)。例如:

docker ps

除了查看正在运行中的容器外,我们还可以通过Docker logs命令查看特定容器内部产生的日志信息。这对于调试和故障排除非常有用。例如:

docker logs my-container

Docker exec 命令

Docker exec 命名用于在指定container内部执行shell command。

```bash

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

```

- OPTIONS:可选参数,用于指定一些额外的配置项。

- CONTAINER:必填参数,要执行命令的容器名称或ID。

- COMMAND:必填参数,要在容器内部执行的命令。

- ARG...:可选参数,传递给命令的额外参数。

例如,在名为"my-container"的容器中执行一个简单的shell命令:

```bash

docker exec my-container ls /app

```

这将在容器内部列出/app目录下的文件和文件夹。

Docker exec还可以通过使用-T标志来分配一个伪终端(pseudo-tty),以便与正在运行中的进程进行交互。例如:

```bash

docker exec -it my-container bash

```

这将在my-container容器内启动一个新的Bash会话,并允许用户与该会话进行交互。

分享到 :
相关推荐

主机域名是什么(怎么创建自己的网站平台)

1、主机域名是什么主机域名是指互联网上的一台服务器在网络上的唯一标识。在互联网中,[...

vs安装时该勾选哪些软件呢(vs2019安装c++应该勾选什么)

1、vs安装时该勾选哪些软件呢在安装软件时,我们常常会面临一个选择:选择哪些软件进[...

vuex状态管理几种状态(vue3和vue2生命周期的区别)

1、vuex状态管理几种状态Vuex是一个专门为Vue.js应用程序开发的状态管理[...

梅捷显卡怎么样(梅捷3060ti焱龙怎么样)

1、梅捷显卡怎么样梅捷显卡是一款知名的电脑配件品牌,备受广大用户的青睐。梅捷显卡在[...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注