jquery extend - 对象数组 [英] jquery extend - array of objects

查看:81
本文介绍了jquery extend - 对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个Form对象,其中包含一个Tab对象数组。

Say I have a Form object which has an array of Tab objects.

var Tab = function (options) {
    return ($jQuery.extend(true, {
        id: 'foo',
        title: 'Foo'
    }, options));
}

var Form = function (options) {
    return ($jQuery.extend(true, {
        id: 'foo',
        tabs: [new Tab()]
    }, options));
}

我可以用这个:

var myForm = new Form({tabs: [new Tab({id: 'bar'}), new Tab({title: 'Bar'}), new Tab({id: 'bar', title: 'Bar'})]});

获取:

myForm.tabs[0] => {id: 'bar', title: 'foo'}
myForm.tabs[1] => {id: 'foo', title: 'Bar'}
myForm.tabs[2] => {id: 'bar', title: 'Bar'}

但有可能以某种方式这样做:

But is it possible to somehow do this:

var myForm = new Form({tabs: [{id: 'bar'}, {title: 'Bar'}, {id: 'bar', title: 'Bar'}]});

得到相同的结果?

推荐答案

您可以遍历选项卡并检查它们是否是 Tab 对象,例如(未经测试):

You can loop over the tabs and check whether they are a Tab object, e.g. (untested):

var Form = function (options) {
    if(options && options.tabs) {
        var tabs = options.tabs;
        for(var i = 0, l = tabs.length; i < l; ++i) {
            if(!(tabs[i] instanceof Tab)) {
                tabs[i] = new Tab(tabs[i]);
            }
        }
    }

    return ($jQuery.extend(true, {
        id: 'foo',
        tabs: [new Tab()]
    }, options));
}

参考: instanceof

这篇关于jquery extend - 对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆