最近发现了一个问题 由于使用JSON.parse不能解析特殊符号,所以使用了encodeURIComponent进行转码
但是奇怪的是 转码之后 data对象里的数据源也发生了变化,并没有使用setdata进行数据修改,求官方一个解答
这是源数据
http://www.xzyigong.com/MemberImg/member2018081112512685421.jpg?x-oss-process=image/resize,m_lfit,w_750,limit_1/auto-orient,0/sharpen,50/quality,q_90/format,jpg
在进行转码之后
自己测试了一下 使用对象的深拷贝去复制一个对象再进行编码就可以避免这个问题
有遇到过这个问题的小伙伴可以看一下 这里提供一个深度拷贝的方法
// 对象拷贝
function
deepClone(source) {
const targetObj = source.constructor === Array ? [] : {};
// 判断复制的目标是数组还是对象
for
(let keys
in
source) {
// 遍历目标
if
(source.hasOwnProperty(keys)) {
if
(source[keys] &&
typeof
source[keys] ===
'object'
) {
// 如果值是对象,就递归一下
targetObj[keys] = source[keys].constructor === Array ? [] : {};
targetObj[keys] = deepClone(source[keys]);
}
else
{
// 如果不是,就直接赋值
targetObj[keys] = source[keys];
}
}
}
return
targetObj;
}