Приведение объекта в качестве хэша в прототипе - PullRequest
0 голосов
/ 01 августа 2010

Я в растерянности здесь. У меня есть этот класс, который я создал, который принимает аргументы в форме объекта:

new Widget('id_of_element', { option1: 'foo', option2: 'bar' });

Однако второй аргумент рассматривается не как хеш, а как объект, поэтому я не могу применить настройки по умолчанию, если они не установлены:

initialize: function (element, options) {
    this.options = $H({ option1: 'something', option2: 'else', option3: 'hello', option4: 100 }).update(options);
}

Мне нужно преобразовать значения из аргумента 'options' в хэш, чтобы я мог использовать функцию update (). Я не могу найти ничего в платформе Prototype, которая будет преобразовывать объект в Hash.

Что странно, в this.options.inspect () отображаются все правильные значения, но когда я его вызываю:

alert(this.options.option1);
// or 
alert(this.options['option1']);

... они возвращаются как неопределенные. Почему метод Hash # inspect находит эти значения, но они все еще не определены? Я что-то упускаю из виду?

1 Ответ

1 голос
/ 01 августа 2010

Нет такой вещи как приведение в JavaScript. Если вы хотите Hash, вам нужно будет создать его, что вы уже делаете.

Из документации по прототипам выясняется, что вам необходимо получить значения, используя методы Hash:

alert(this.options.get("option1"));
...