扫码关注官方订阅号
for循环 改变dispatch对象中的某个字段的值,再放到allTask这个对象中key值改变了 但是dispatch这个是最后一次的才赋值进去,没有达到预期的值这个是什么原理?怎么解决
源码:
运行结果:
预期的结果是:
小伙看你根骨奇佳,潜力无限,来学PHP伐。
allTask['123456-0'] allTask['123456-1'] allTask['123456-2'] dispatch这四个指向的是同一个对象,所以输出时,以最后一次修改为准。你可以在for循环的最后加上dispatch={},使每次循环时,都new一个新的对象出来
dispatch 用的是同一个变量了,所以循环里后面的赋值把前面的覆盖了。
可以在循环里面定义dispatch 变量。
把for循环里面的var改成let
dispatc,可以理解成其他语言中的类的实例,你无论怎么赋值,在都还是它
for循环第一行添加dispatch = {};,没有这一句你引用的对象就是同一个,allTask里既然都是同一个对象,当这个对象变化了,数组中所有元素(其实是一个相同的元素)就都变化了。
dispatch = {};
allTask
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
allTask['123456-0'] allTask['123456-1'] allTask['123456-2'] dispatch
这四个指向的是同一个对象,所以输出时,以最后一次修改为准。你可以在for循环的最后加上dispatch={},使每次循环时,都new一个新的对象出来
dispatch 用的是同一个变量了,所以循环里后面的赋值把前面的覆盖了。
可以在循环里面定义dispatch 变量。
把for循环里面的var改成let
dispatc,可以理解成其他语言中的类的实例,你无论怎么赋值,在都还是它
for循环第一行添加
dispatch = {};,没有这一句你引用的对象就是同一个,allTask里既然都是同一个对象,当这个对象变化了,数组中所有元素(其实是一个相同的元素)就都变化了。