JavaScript with&eval妙用——根据表达式获取对象中对应的属性值

前端之家收集整理的这篇文章主要介绍了JavaScript with&eval妙用——根据表达式获取对象中对应的属性值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

JavaScript with&eval妙用——根据表达式获取对象中对应的属性

var getValue = (propExp,obj) => {
var result;
try {
var safeWindow = {
alert: noop,confirm: noop,prompt: noop
};
with (obj) {
result = eval.call(safeWindow,propExp);
}
} catch (error) {
}

return result;

}

var user = {
name: {
first: 'Jan',last: 'Toim'
},age: 20,address: [
{
address: '美国加州',phone: '333'
},{
address: '美国纽约',phone: '444'
}
]
};

getValue('age',user);//20
getValue('name',user);//{first: 'Jan',last: 'Toim'}
getValue('name',user)===user.name;//true
getValue('address[0].phone',user);//333
getValue('address[5].phone',user);//undefined
getValue('alert(22)',user);//undefined(不弹出alert)

 {
    var fun = new Function('obj','var noop = function () { };var result;try{var safeWindow={alert:noop,confirm:noop,prompt:noop};with(obj){result=' + propExp + '}}catch(error){};return result;');
    return fun(obj);
};

猜你在找的JavaScript相关文章