在vue中定义的空对象,打印出来却是{__ob__: Observer}
一、问题:今天在vue的data中定义了一个json对象,明明是个空对象,可是打印的时候却是下面这样的。定义:data(){return{currentmeetingProjects: {},//当前选择的待审议项目}}打印:二、理解之所以在data中定义的数据可以实现双向绑定,是因为当在data中绑定一个对象的时候,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
更多推荐
已为社区贡献5条内容
所有评论(0)