请问这样为什么不可以呢

来源:2-19 自由编程

CaNg_7

2019-07-01 18:23:20

<template>

<div>

<p>{{ sortItems }}</p>

<p>{{items}}</p>

</div>

</template> <script>

export default {

data() {

return { items: [1, 4, 6, 7, -9, 4, 0, -2, -1, 8] };

},

computed: {

sortItems: function() {

let items1 = items;

return this.items1.sort(function(a, b) {

return a - b;

});

}

}

};

</script>


写回答

2回答

好帮手慕星星

2019-07-02

你好,引用类型赋值指向的是同一个地址,所以items1改变之后,items也会改变,这种改变是正常的,因为在实际中不可能两种情况同时存在。

如果想要原来的不改变,可以使用JSON对象中的方法来进行复制:

http://img.mukewang.com/climg/5d1ab978000181fe07460230.jpg

这样复制出来的数组和原数组就没有关系了:

http://img.mukewang.com/climg/5d1ab991000164cb03560080.jpg

知道这样使用就可以,自己测试下,祝学习愉快!

0

好帮手慕星星

2019-07-01

你好,是this用错了地方,this使用data的属性,在方法中定义的变量不需要使用this,如下修改:

http://img.mukewang.com/climg/5d19e7cd00011f9405500262.jpg

自己重新测试下,祝学习愉快!

0
haNg_7
h 谢谢 这样可以了 但是我还有一个问题就是 现在输出的两个数组是一样的 我尝试把this.items 赋值给items 是不想让它的改变污染的之前的数组 但是还是失败了.请问是赋值的时候他们指向同一个堆内存了吗? 我不太确定自己的思路对不对.请问怎么样才能避免这个问题呢? 谢谢
h019-07-01
共1条回复

0 学习 · 10739 问题

查看课程