在Prototype中将对象转换为哈希

时间:2010-08-01 13:26:20

标签: javascript object hash prototypejs

我在这里不知所措。我创建了这个以对象形式接受参数的类:

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'中的vales转换为Hash,因此我可以使用update()函数。我在Prototype框架中找不到任何将对象强制转换为Hash的东西。

奇怪的是,在this.options.inspect()上,显示了所有正确的值,但是当我调用它时:

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

......他们回来时未定义。为什么Hash#inspect方法会找到这些值,但仍未定义?我错过了某种类型的实质性理解吗?

1 个答案:

答案 0 :(得分:1)

没有像JavaScript这样的东西。如果你想要Hash,那么你将需要创建一个你已经在做的。

从Prototype文档中,您似乎需要使用Hash的方法获取值:

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