我有一個我一直在使用和工作的代碼片段。它在我的應用程序中使用很多,我需要加快速度。以字符串路徑深入訪問對象是否有更好的方法?它需要能夠訪問的屬性和方法,請參閱我下面的例子:訪問在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