设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5494|回复: 12
打印 上一主题 下一主题

[有事请教] 请教一个关于JS的基础问题,汗颜中………………

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2346
在线时间
168 小时
注册时间
2017-4-25
帖子
219
跳转到指定楼层
1
发表于 2021-6-8 11:31:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
例子:
var obj  = {x1:456,x2:789};
var xob = obj;
xob.x1 = 123;
console.log(obj.x1); //123

意思就是xob并不是独立的,其中的变量变化时,obj中也会相应变化。有没办法使两者相对独立,不关联?

Lv5.捕梦者

梦石
16
星屑
12090
在线时间
1416 小时
注册时间
2020-3-21
帖子
365

极短23获奖

12
发表于 2021-6-9 17:32:22 | 只看该作者
lisliz 发表于 2021-6-9 09:07
看到楼上很多都说用json序列化+反序列化做深拷贝,我就想起了最近遇到的一个问题,某些Game_XXX里引用的同 ...

我在写存档脚本的时候也遇到过。读取存档中的变量的时候,如果变量地址没有设置清楚,那么就会出现两个对象的问题ヽ(ー_ー)ノ
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
26
在线时间
701 小时
注册时间
2021-3-24
帖子
549
11
发表于 2021-6-9 15:38:03 | 只看该作者
封个方法 new个对线 拿参数一个数值一个数值赋上 在反回去
全家活光光~
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5060
在线时间
705 小时
注册时间
2018-12-11
帖子
241
10
发表于 2021-6-9 09:07:16 | 只看该作者
看到楼上很多都说用json序列化+反序列化做深拷贝,我就想起了最近遇到的一个问题,某些Game_XXX里引用的同一个对象在存档后变成两个对象了。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11175
在线时间
2066 小时
注册时间
2013-6-10
帖子
1516
9
发表于 2021-6-9 07:43:16 | 只看该作者
那可不可以这样呢?
xob=obj
xab=obj
xob.a=111
console.log(xab);  
xab是不是原来的obj?

点评

这个不行吧,指针指向的都是obj对象存储  发表于 2021-12-25 15:16
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2585
在线时间
297 小时
注册时间
2021-5-4
帖子
101
8
发表于 2021-6-9 04:54:19 | 只看该作者
本帖最后由 MH-Pride 于 2021-6-9 04:58 编辑

他们都是指向同一个值 所以值变 他们得到的值也会变  这是我的理解如果没有记错的话
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2276
在线时间
576 小时
注册时间
2018-9-13
帖子
36
7
发表于 2021-6-9 00:12:43 | 只看该作者
印象中MV自带深拷贝函数:JsonEx.makeDeepCopy(对象)
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21686
在线时间
9420 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

6
发表于 2021-6-8 23:28:11 | 只看该作者
深拷贝,无脑 JSON.parse+JSON.stringify,注意处理那些json序列化会丢的东西

浅拷贝面向新浏览器我都直接 obj = { ...obj } arr = [ ...arr ]
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2346
在线时间
168 小时
注册时间
2017-4-25
帖子
219
5
 楼主| 发表于 2021-6-8 18:45:20 | 只看该作者
本帖最后由 rexuegg123 于 2021-6-8 18:49 编辑
fux2 发表于 2021-6-8 18:02
实际上直接赋值浅拷贝也算不上,多数情况下浅拷贝也已经够用
你可以试试,不过最好还是理解几种情况的区别 ...


已经在网上看过了,有好几种方法,各有优缺点,比较稳妥的还是自己写一个判断类型并遍历深层拷贝的

slice()只能用于数组吧?
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42426
在线时间
7603 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2021-6-8 18:02:55 | 只看该作者
实际上直接赋值浅拷贝也算不上,多数情况下浅拷贝也已经够用
你可以试试,不过最好还是理解几种情况的区别再具体应用
var newObj = obj.slice(0);
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 17:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表