我在这里不知所措。我创建了这个以对象形式接受参数的类:
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方法会找到这些值,但仍未定义?我错过了某种类型的实质性理解吗?
答案 0 :(得分:1)
没有像JavaScript这样的东西。如果你想要Hash
,那么你将需要创建一个你已经在做的。
从Prototype文档中,您似乎需要使用Hash
的方法获取值:
alert(this.options.get("option1"));