2012-06-05 2 views
7

В C# вы можете создать собственный индексатор, как такJavascript пользовательского индекс аксессор

public object this[string name] 
    { 

    } 

Я работаю с яваскриптом виджета библиотекой, который имеет виджет, который принимает Aray объектов как свойство называемых ярлыков вроде так

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

проблема заключается в том, что вы должны планировать заранее, чтобы точно знать, что все значения, которые будут нуждаться в этикетке. Например, в приведенном выше примере я знаю, что метки будут для значений 1 и 2. Но если я не знаю, какие значения могут быть, я хотел бы иметь возможность динамически создавать текст на основе значения, которое оно пытается получить доступ к

так, когда библиотека внутренне пытается получить доступ:

this.labels[n].text 

Я хотел this.labels [п], чтобы сделать что-то вроде

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

ли это возможно в рамках язык javascript?

ответ

1

Вы можете получить es6 proxies в последнем Chrome и написать обработчик, как в C#, но он не будет совместим со старыми браузерами.

Тем временем предлагаю положить getLabel() метод на Thingy.prototype.

Смежные вопросы