Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
String.prototype.lowFirstLetter = function() {
return this.charAt(0).toLowerCase() + this.slice(1);
};
var bdList = bearcat.getBeanFactory().getBeanDefinitions();
var initCount = 0;
var dataMap = {};
var list = [];
while(initCount < Object.size(bdList)) {
for (var bdName in bdList) {
if (!bdList.hasOwnProperty(bdName)) continue;
if (dataMap[bdName]) continue;
var definition = bdList[bdName];
var depends = definition.propsOn;
if (depends == undefined && depends.length == 0) {
dataMap[bdName] = 1;
list.push(bdName);
initCount++;
}else {
var value = 1;
for (var i = 0; i < depends.length; i++) {
var ref = depends[i].ref;
if (!dataMap[depends[i].ref]) {
value = -1;
continue;
}
value += dataMap[ref];
}
if (value > 0) {
dataMap[bdName] = value;
list.push(bdName);
initCount++;
}
}
}
}
console.log(dataMap);
list.sort(function(a, b){
return dataMap[a] - dataMap[b];
});
var fileList = [];
var idPaths = __bearcatData__.idPaths;
console.log(idPaths);
for (var i = 0; i < list.length; i++) {
fileList[i] = '"' + idPaths[list[i].lowFirstLetter()] + '"';
}
console.log(fileList.join(', '));
本文深入分析了一段JavaScript代码的功能,该代码用于获取bean工厂中bean定义的数量,并按照初始化依赖顺序进行排序。同时展示了如何利用对象属性和循环遍历来实现这一功能,包括对象大小计算和字符串首字母转小写的方法。最后通过实例输出了排序后的bean名称列表及其对应的文件路径。
169

被折叠的 条评论
为什么被折叠?



