vue 封装对象深拷贝方法
2023-12-13 19:31:35
vue 封装对象深拷贝方法
- 在 src/ utils文件夹下面新建
index.js
// index.js
// 深拷贝对象
export function deepClone(obj) {
const _toString = Object.prototype.toString
// null, undefined, non-object, function
if (!obj || typeof obj !== 'object') {
return obj
}
// DOM Node
if (obj.nodeType && 'cloneNode' in obj) {
return obj.cloneNode(true)
}
// Date
if (_toString.call(obj) === '[object Date]') {
return new Date(obj.getTime())
}
// RegExp
if (_toString.call(obj) === '[object RegExp]') {
const flags = []
if (obj.global) { flags.push('g') }
if (obj.multiline) { flags.push('m') }
if (obj.ignoreCase) { flags.push('i') }
return new RegExp(obj.source, flags.join(''))
}
const result = Array.isArray(obj) ? [] : obj.constructor ? new obj.constructor() : {}
for (const key in obj) {
result[key] = deepClone(obj[key])
}
return result
}
- 使用
// 简单使用
<script>
import { deepClone } from '@/utils/index'
export default {
name: "HomeView",
data() {
return {
obj: {
a: 1,
b: 2,
c: 3,
},
};
},
mounted(){
let newObj = deepClone(this.obj) // 方法使用
// 方法验证
console.log(newObj) // {a: 1, b: 2, c: 3}
newObj.c = 4
console.log(newObj) // {a: 1, b: 2, c: 4}
console.log(this.obj) // {a: 1, b: 2, c: 3}
}
};
</script>
- 搞定 复制可直接用!
文章来源:https://blog.csdn.net/weixin_45563734/article/details/134978397
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!