在vue中定义的空对象,打印出来却是{__ob__: Observer}

一、问题:
今天在vue的data中定义了一个json对象,明明是个空对象,可是打印的时候
却是下面这样的。
定义:

data(){
  return{
    currentmeetingProjects: {},//当前选择的待审议项目
}}

打印:
在这里插入图片描述
二、理解

之所以在data中定义的数据可以实现双向绑定,是因为当在data中绑定一个对象的时候,vue会添加一个ob__:Observer_监听器对数据进行监听,这些内部属性虽然不可枚举(即不可以通过for…in循环进行遍历),但是console.log打印的时候可以打印出来。这个监听器不能删掉,如果删掉的话就不能进行数据监听,也就失去了它最重要的作用。

三、解决
如何得到原始的数据对象?按照官方文档解释
在这里插入图片描述

console.log('打印------',JSON.parse(JSON.stringify(this.currentmeetingProjects)), '-----')
//打印------ {} "-----"

另外js判断对象是否为空对象的几种方法
1.先将json对象转换成json字符串,再判断字符串是否是“{}”

var data = {}
var flsg = JSON.stringify(data) != "{}"
console.log(b)

2.利用Es6特性将json对象的属性追加到数组,判断数组长度是否为0

var data = {};
var arr = Object.keys(data);
alert(arr.length == 0);//true

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45791799/article/details/120502758