JavaScript:从中获取完全限定的函数名称?

前端之家收集整理的这篇文章主要介绍了JavaScript:从中获取完全限定的函数名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

看看下面的代码片段.是否有任何函数可以代替…来生成路径,可以在另一个函数中重用?像var route = this.show.fullyQualifiedName或许?

var services = {
    'github.com': {
        api: {
            v2: {
                json: {
                    repos: {
                        show: function(username,fn) {
                            var route = ...; 
                            // route now == 'github.com/api/v2/json/repos/show'

                            route += '/' + username;

                            return $.getJSON('http://' + route).done(fn);
                        }
                    }
                }
            }
        }
    }
}
最佳答案
不,没有,至少没有使用“反射”式操作.

对象不知道包含它们的对象的名称,尤其是因为同一对象(引用)可以包含在许多对象中.

你能做到的唯一方法就是从顶层对象开始,向前推进,例如:

function fillRoutes(obj) {
    var route = obj._route || '';
    for (var key in obj) {
        if (key === '_route') continue;
        var next = obj[key];
        next._route = route + '/' + key;
        fillRoutes(next);
    }
}

这将在包含该对象路径的每个对象中放置一个新的_route属性.

http://jsfiddle.net/alnitak/WbMfW/

猜你在找的JavaScript相关文章