Javascript - 通过引用定义对象属性名称

yod*_*oda 0 javascript oop jquery

我正在尝试在对象中设置一些属性.我不喜欢告诉对象从外面可以期待什么(使对象更灵活,imo),所以我尝试了这个,没有成功:

slideshow = {
    init : function(data) {
        if (!data)
            return false;

        $.each(data,
            function(index, value) {
                // this isn't working, and don't know how to
                this[index] = value;
            }
        );

        alert(this.options.interval);

        return true;
    },
};
Run Code Online (Sandbox Code Playgroud)

认为很清楚缺少什么.

有任何想法吗?干杯!

更新

    var data = {
        options : [
            {
                interval : 8000,
                target : '#slider img',
            },
        ],
        images : [
            {
                img : 'assets/img/assets/img/slider_test_img.png',
                title : 'Uniforme de Restauração 1',
                description : 'blablabla descricao',
                url : 'http://www.google.pt',
            },
            {
                img : 'assets/img/assets/img/slider_test_img.png',
                title : 'Uniforme de Restauração 2',
                description : 'blablabla descricao 2',
                url : 'http://www.google.pt',
            },
            {
                img : 'assets/img/assets/img/slider_test_img.png',
                title : 'Uniforme de Restauração 3',
                description : 'blablabla descricao 3',
                url : 'http://www.google.pt',
            },
        ],
    }
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 6

你必须提到this:

var self = this;
$.each(data, function(index, value) {
    self[index] = value;
});
Run Code Online (Sandbox Code Playgroud)

或者使用jQuery的jQuery.proxy方法:

$.each(data, $.proxy(function(index, value) {
    this[index] = value;
}, this));
Run Code Online (Sandbox Code Playgroud)

否则,this将参考文档value中所述.