Индексированные свойства в JavaScript - PullRequest
1 голос
/ 15 марта 2011

(я не могу поверить, что это невозможно, но я, вероятно, не использую правильные условия поиска)

У меня есть «класс», подобный этому:

function MyClass() = {
    this.getItem = function(key) {
        // return whatever;
    };
    this.setItem = function(key, val) {
        // set whatever
    };
};

Есть ли какой-нибудь способ, которым я могу получить / установить (как я думаю, называется) индексированное свойство?

var test = new MyClass();
test["key"] = "value";
alert(test["key"]);

(Контекст, если это имеет какое-то значение, я пытаюсь обернуть localStorage в класс, который добавляет префикс ко всем ключам. Обертывание setItem / getItem легко. Я просто хотел пойти дальше и обернуть [ ] функциональность)

Ответы [ 3 ]

1 голос
/ 15 марта 2011

Как описано в MDC ( ссылка ), это можно сделать в Javascript 1.8.5.Однако поддержка этого плохая и в основном только в Firefox.Кроме этого нет никакого реального способа сделать это.

1 голос
/ 15 марта 2011

У вас нет автоматического доступа таким образом в JavaScript. По крайней мере, я никогда этого не видел.

Вы можете использовать

var test = new MyClass();
test.key = "value";
alert(test.key);

и

alert(test["key"]);

Но это может быть не то, что вы после ...

0 голосов
/ 15 марта 2011

Похоже, вы ищете геттер и сеттеры, о которых вы читаете подробнее здесь:

https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects#Defining_Getters_and_Setters

Помните, что этот синтаксис поддерживается не во всех браузерах.

Подробнее о геттерах и сеттерах можно прочитать здесь:

http://ejohn.org/blog/javascript-getters-and-setters/

http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...