我有一个我一直在使用和工作的代码片段。它在我的应用程序中使用很多,我需要加快速度。以字符串路径深入访问对象是否有更好的方法?它需要能够访问的属性和方法,请参阅我下面的例子:访问在javascript中使用字符串路径的深层属性和方法
function get(obj, path) {
var paths = path.split('.'),
curProp = obj;
for(var i=0;i<paths.length;i++){
if (!curProp[paths[i]]) return
curProp = (typeof curProp[paths[i]] !== "function") ? curProp[paths[i]] : curProp[paths[i]]() ;
}
return curProp;
}
的片段通过该对象的路径将继承属性传递
var obj = {contact:{name:"john"}};
console.log(get("contact.name",obj));
如果对象有一个返回的方法反对它可以返回太
var obj = {contact:function(){return {name:"john"}}};
console.log(get("contact.name",obj));
如果这是**工作代码**,你认为可以改进,参见[codereview.se。否则,请澄清具体问题。 – jonrsharpe
感谢您的提示! – MartinWebb
这与函数式编程有什么关系?你为什么要为函数*值*做一个例外? – naomik