介绍
前端在调试的时候很多都使用了console.log,但大家都知道他的机制吗?
遇到问题
在想要获取一个对象的某一个属性的属性值的时候,因为发送了ajax请求,然后在mounted阶段打印对象的属性时为空,而打印对象显示要获取的属性有值。
机制介绍
console.log实际上打印的是对象的引用,网上对于这种对象中的属性有值而单独打印对象的属性没有值的情况有两种说法:1.打印是 I/O 操作,浏览器会置后执行 2.打印的是对象的引用
想要获取的对象的属性假定为obj.name
当在mounted阶段为obj.name赋值,然后在他后一行打印obj和obj.name会发现obj还是发送ajax后为他赋的值,所以证明了打印的是对象的引用而不是置后执行,因为obj.name是mounted阶段赋的值,说明打印是在mounted为obj.name赋值之后就打印了,而发送ajax之后对象的值发生了改变。
mounted() {
init();
obj.name = 2;
console.log(obj,obj.name) // obj ,2
}
obj中的name是init()中发送ajax后用后端返回的数据赋值后的name。