2012-06-05 66 views
7

在C#中,你可以创建自定义索引像这样的Javascript自定义索引访问

public object this[string name] 
    { 

    } 

我与它有一个小部件,需要对象的阿雷作为属性像所谓的标签,一个JavaScript组件库工作

new Thingy({ 
     labels: [{value:1, text:"my label"},[{value:2, text:"my next label"}] 
     }); 

问题是,你必须提前计划以确切知道所有的值将需要一个标签。例如,在上面的示例中,我知道标签将用于值1和2.但是,如果我不知道值是什么,我希望能够基于它的值动态创建文本试图访问

所以当库内部试图访问:

this.labels[n].text 

我想this.labels [N]像做

function(n){return {text: "label for " + n};} 

这是可能的范围内javascript语言?

回答

1

您可以在最新的Chrome中获得es6 proxies,并且可以像C#一样编写处理程序,但它不会与旧版浏览器兼容。

同时我建议在Thingy.prototype上加上getLabel()方法。