问题描述:微信小程序 使用setData保存对象后,在html页面获取该属性时发现无法获取。在控制台打印对象有值,点开三角查看详情的时候为null。在本地上调试10次可能有1次出现这种问题,在真机上上测试百分之百出现该问题。无任何报错提示。
代码:
const personalInfo = {
serviceStationId:serviceStationList[0].netCode,
serviceStationName:serviceStationList[0].netName
}
_self.setData({
personalInfo
})
console.log("personalInfo,",_self.data.personalInfo)
console.log("personalInfo,",_self.data.personalInfo.serviceStationId)
console.log("personalInfo,",_self.data.personalInfo.serviceStationName)
控制台截图:
你打印这个对象的语句执行的时候, 对象里面的确是有值的,但是当程序继续执行,下面的代码是有对这个对象赋值的语句,所以chrome控制台显示,里面有值。
let obj={
name:"555",
age:"15"
};
console.log(obj);
obj.age={};
在浏览 直接输入这个 就会复现 因为 你打印之后 还对 对象操作了 。因为 js对象赋值 只是引用地址赋值过去了,还是指向同一个 地址
如果在view要使用该对象的话,获取到的都是null。js中打印却有值,真的很迷.
这说明在打印之后的代码里有修改这个对象的操作;你输出来的对象是添加了特性的,会变的;你直接输出的就是直接访问当时的值,检查代码在输出之后哪里对 对象操作了