js实现深拷贝_前端解决跨域的几种办法[通俗易懂]

js实现深拷贝_前端解决跨域的几种办法[通俗易懂]一、深浅拷贝在使用JS对数组或者object进行操作的时候,如果只是简单的将它赋予其他变量,那么只要更改其中的任何一个,然后其他的也会跟着改变举例说明:解决思路:创建一个新的对象(数组)使用遍历的方法把原有的数据加到新的对象(数组)里面解决代码:测试代码:letobj1={nam

大家好,欢迎来到IT知识分享网。

一、深浅拷贝

在使用JS对数组或者object进行操作的时候,如果只是简单的将它赋予其他变量,那么只要更改其中的任何一个,然后其他的也会跟着改变

举例说明:

        let arr = [1, 2, 3]
        let arr2 = arr
        arr[0] = 3
        console.log(arr[0])//输出3
        console.log(arr2[0])//输出3
        let obj = {
            name: 'obj'
        }
        let obj2 = obj
        obj2.name='obj2'
        console.log(obj.name)//输出obj2
        console.log(obj2.name)//输出obj2

解决思路:创建一个新的对象(数组)使用遍历的方法把原有的数据加到新的对象(数组)里面

解决代码:

    function deepclone(obj){
        let data
        if(Object.prototype.toString.call(obj)==='[object Array]'){
            data=[]
            for (let index = 0; index < obj.length; index++) {
                data.push(deepclone(obj[index]))
            }
        }else if(Object.prototype.toString.call(obj)==='[object Object]'){
            data={}
            for(let key in obj){
                data[key]=deepclone(obj[key])
            }
        }else {
            return obj
        }
        return data
    }
测试代码:
let obj1 = {
name: ‘obj1’,
}
let obj2 = deepclone(obj1)
console.log(obj2.name)//输出obj1
obj1.name=’obj’
console.log(obj2.name)//还是输出obj1

let arr = [1, 2, 3]
let arr2 =deepclone(arr)
console.log(arr2[0])//输出1
arr[0]=9
console.log(arr2[0])//还是输出1

以上测试代码不严谨,但是懒啊,大家如果发现问题可以留言,一起学习共同进步  哈哈哈哈哈哈哈~~~~~!!!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29964.html

(0)

相关推荐

发表回复

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

关注微信