Javascript 在原型中将对象强制转换为哈希

Javascript 在原型中将对象强制转换为哈希,javascript,object,hash,prototypejs,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

我在这里不知所措。我创建了一个类,它采用对象形式的参数:

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()函数。我在原型框架中找不到任何将对象转换为哈希的东西

奇怪的是,在这个.options.inspect()上,所有正确的值都会显示出来,但当我调用它时:

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

。。。它们以未定义的形式返回。为什么Hash#inspect方法会找到这些值,但仍然没有定义?我是否缺少对某种类型的实质性理解?

在JavaScript中没有强制转换这样的东西。如果您想要一个
散列
,那么您需要创建一个,您已经在这样做了

从原型文档中,似乎需要使用
散列
的方法获取值:

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

我是否能投球无关紧要。我应该能够调用这些值。如果Hash#inspect可以看到它们应该是什么样子,为什么我不能提取这些值以供使用呢?谢谢。我知道Hash#get方法,但我真的希望可以更简单地访问变量,就像一些元素方法一样,返回x/y和left/top数据对,可以通过这种方式访问