javascript - vue 中对象属性变为空白

标签 javascript vue.js vuejs2 vue-component javascript-objects

我正在尝试在 Vue 组件中实现过滤器方法。

我有以下过滤方法:

    filterHotels:function(){

            var thisHotels = this.hotelRoomArr;

            console.log(this.hotelRoomArr['107572']['rooms'])

            //this outputs:

            {__ob__: Observer}
            3: (...)
            __ob__: Observer {value: {…}, dep: Dep, vmCount: 0}
            get 3: ƒ reactiveGetter()
            set 3: ƒ reactiveSetter(newVal)
            __proto__: Object


            thisHotels['107572']['rooms'] = {};

            console.log(this.hotelRoomArr['107572']['rooms']);

            //this outputs:

            {__ob__: Observer}
            __ob__: Observer {value: {…}, dep: Dep, vmCount: 0}
            __proto__: Object
    }

如上面的代码所示:

虽然我将 thisHotelsrooms 属性设置为空白对象,this.hotelRoomArrrooms 属性也正在改变。

从逻辑上讲,this.hotelRoomArrrooms 属性不应更改。

我必须做什么才能使 this.hotelRoomArr 不被更改?

最佳答案

当您执行 var thisHotels = this.hotelRoomArr; 时,thisHotels 将成为引用。

尝试使用lodash函数cloneDeep:

https://lodash.com/docs/4.17.15#cloneDeep

import cloneDeep from 'lodash/cloneDeep';

...

var thisHotels = cloneDeep(this.hotelRoomArr);

这将创建一个副本并防止 this.hotelRoomArr 受到更改的影响

关于javascript - vue 中对象属性变为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59660729/

相关文章:

web-applications - VueJS 2.0 : Deploying to sub-folder comes out blank?

vue.js - ref、toRef 和 toRefs 之间有什么区别

javascript - Lodash 的 _.debounce() 在 Vue.js 中不起作用

javascript - Vue.js:使用带有 v-for 循环和 v-if 的动态创建的 v-model 来显示/隐藏元素

typescript - 该表达式不可构造。类型 'typeof import("jspdf")' 没有构造签名

javascript - jquery on() 方法超出最大调用堆栈大小

javascript - js解码摩尔斯电码

javascript - JQuery 验证错误放置重复自身

javascript - 如何在饼图的 Highcharts 中隐藏标签

vue.js - 在 VueJS 2.x 中使用 "script setup"