【发布时间】:2021-11-27 06:38:49
【问题描述】:
我在 methods 属性中有一个函数,它从 data() 方法中获取 passedData 值,对对象进行一些更改并将新值存储在常量中
这会以某种方式引起副作用,它也会改变passedData 的值。
是什么原因,我该如何预防?
this.passedData: -->
{"propss":"value"}
App.vue?3dfd:61 {"propss":"propss : value"}
App.vue?3dfd:49 {"propss":"propss : value"}
App.vue?3dfd:61 {"propss":"propss : propss : value"}
new Vue({
el: "#app",
data() {
return {
passedData: { propss: "value" },
};
},
methods: {
displayData() {
console.log(JSON.stringify(this.passedData));
const root = d3.hierarchy(this.passedData, function(d) {
if(typeof d == "object")
return Object.keys(d).filter(d=>d!="$name").map(k=>{
if(typeof d[k] == "object") d[k].$name = k;
else d[k] = k + " : " + d[k];
return d[k];
});
})
console.log(JSON.stringify(this.passedData));
},
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<button type="button" @click="displayData">display</button>
</div>
【问题讨论】:
-
你正在改变它,
d[k].$name = k。
标签: javascript vue.js javascript-objects side-effects