指针Pointer
你可能会说
我只想改这份草稿,怎么原来的设置也跟着变了?
指针是保存目标位置的值,让程序通过这个位置找到数据。例如两个名字都指向同一份设置,改动其中的内容,另一个名字读到的结果也会变化。JavaScript 的对象引用可以帮助理解这种“指向”关系,但它不向代码提供可直接操作的内存地址。
也常被叫作数据指针内存指针分支指针HEAD 指针
延伸阅读 · 权威出处
我只想改这份草稿,怎么原来的设置也跟着变了?
把原配置直接赋给草稿,只增加了一个访问同一对象的名字,并没有复制内容。
修改内容与换个指向:修改 draft.theme.mode 会改变它指向的对象;把 draft 重新赋成另一个对象,只是让这个名字换个目标,不会因此改写原对象。数字等基本值的赋值也不同于共用可修改对象。
浅拷贝只隔离第一层:用 { ...original } 得到新的外层对象,但里面的 theme 仍指向原来的主题对象。因此修改 draft.theme.mode 仍会影响原配置;它与直接赋值的区别是外层已经独立。
Git 里的指针是什么意思:Git 分支记录当前指向的提交;通常 HEAD 指向当前分支,分支再指向提交。这是记录目标的类比,不是内存地址。切换分支还会更新工作区文件,未提交改动可能阻止切换;无需另复制整个项目,不等于文件不会变化。
编辑设置后点取消,原配置也被改了。请检查草稿是否共用了原对象或嵌套对象,按数据类型隔离编辑内容。改完验证:修改嵌套字段并取消后,原配置保持原样;点击保存才更新设置。