在vue2 源码中获取属性a.b.c 的值
let data= {
a: {
b: {
c: 100
}
}
}
/**
* Parse simple path.
*/
const bailRE = new RegExp(`[^${unicodeRegExp.source}.$_\\d]`)
export function parsePath (path: string): any {
if (bailRE.test(path)) {
return
}
const segments = path.split('.')
return function (obj) {
for (let i = 0; i < segments.length; i++) {
if (!obj) return
obj = obj[segments[i]]
}
return obj
}
}
源码中使用正则。自己手写实现一个
function lookup(dataObj, keyName) {
// 看看keyName 中有没有点符号
if (keyName.indexOf(".") > -1 && keyName !== ".") {
var keys = keyName.split("."); //[ 'a', 'b', 'c' ]
console.log(keys);
var temp = dataObj;
for (let i = 0; i < keys.length; i++) {
temp = temp[keys[i]];
console.log("temp==", temp);
}
return temp;
}
// 如果没有点符号
return dataObj[keyName];
}
console.log(lookup(data, "a.b.c"));