在javascript中将对象指定为键值

时间:2012-10-16 16:49:43

标签: javascript jquery

我想做这样的事情:

this.slides = {$('#Page_1') : null,
               $('#Page_2') : null,
               $('#Page_3') : null};

为什么我这样做,或者我有什么好处?
我不想在整个课程中使用jquery选择器。


解决方案:

this.slides = [{"key": $('#Page_1'), "value": null},
               {"key": $('#Page_2'), "value": null},
               {"key": $('#Page_3'), "value": null}];

限制:

  

这种方法的问题在于你必须遍历   每次你想要接近这个整个对象。你应该使用   id作为标识符,效率更高。 - Christoph

4 个答案:

答案 0 :(得分:3)

不,键必须是文字。你可以使用你对象的属性。

答案 1 :(得分:2)

如果您的处理基于this.slides内容,为什么不使用id作为密钥?因为它们也意味着“独特”,否则你会破坏DOM。 所以我建议像

这样的东西
this.slides = {'#Page_1':null,'#Page_2':null,'#Page_3':null};

对the.slides

的处理进行了非常轻微的修改

答案 2 :(得分:1)

为什么不尝试这样的结构:

this.slides = [{"key": $('#Page_1'), "value": null},
               etc.];

或者这是否打破了使用对象的需要?

当然,在迭代它时,你必须使用如下逻辑:

for (var i = 0; i < this.slides.length; i++) {
    var key = this.slides[i].key;
    var value = this.slides[i].value;
}

答案 3 :(得分:1)

您不能将对象用作键,只能使用普通文字。我建议这样的结构:

this.slides = { 'Page_1' : $('#Page_1'),
                'Page_2' : $('#Page_2')
                'Page_3' : $('#Page_3')};

通过这种方式,您可以使用id元素轻松访问相应的jQuery-Object。 (您可以省略键的引号。)

slides.Page_1
// or
slides['Page_1']

现在为您提供相应的jQuery对象。