库下载地址:Acan.js 在javascript中直接使用二级以上的属性的时候,会经常意外的让程序挂掉,原因是父属性为undefined,从而导致子属性取值崩溃 以下是Acan库中的解决方案,通过递归循环的去判断父属性是否存在,一级一级往下取值,如果取不到值可以付默认值 同时支持数组和对象的直接取值
/*
* 直接获取对象多级属性值
* Acan.objGet(obj,'a.0.c') = obj.a[0].c
* Acan.objGet(obj,'a.b.c') = obj.a.b.c
*/
//df Mixed default (默认值)
Acan.objGet=function(obj,str,df){
var rs='',p,o;
if(Acan.isStr(str)){
p=str.split('.');
}
if(Acan.isObj(obj) || Acan.isArr(obj)){
o=obj;
p.forEach(function(v){
if(v.length<1 || (!Acan.isObj(o) && !Acan.isArr(o))){
o=undefined;
return;
}
if(o[v]){
o=o[v];
}else{
o=undefined;
}
});
}
if(df!==undefined && o===undefined) o=df;
return o;
}