<!DOCTYPE html>
<html>
<body>
<script>
var e1 = { id: 1, name: 'a' };
var e2 = { id: 2, name: 'b' };
var e3 = { id: 3, name: 'c' };
var arr = [ e1, e2, e3 ];
function IndexedObj(arr){
var obj = new Object();
arr.forEach(function(e){
obj[e.id] = e;
});
return obj;
}
var ind = new IndexedObj(arr);
document.write(ind[1].name); // output: 'a'
</script>
</body>
</html>
JavaScript是基于对象的语言,不是面向对象的语言(呵呵,我也傻傻分不清楚)。在JavaScript里,是没有索引器的。不过,基于其语法特性,我们可以模拟面向对象语言中的某些语法(糖)。JavaScript是一门非常灵活而优美的语言(当然也比较任性,你可以随便定义一个东西,然后去继承它的特性,我把它称为“无级抽象”,就像无级缩放一样),可以充分发挥我们的创造性。——似乎,我应该先讲讲如何模拟“类”的,但是这类技术文章很多,比如《面向对象的JavaScript——类》,就不费口舌了。毕竟,我也只是初学者嘛,谦虚很重要!