Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery扩展-对象数组_Javascript_Jquery - Fatal编程技术网

Javascript jquery扩展-对象数组

Javascript jquery扩展-对象数组,javascript,jquery,Javascript,Jquery,假设我有一个表单对象,它有一个Tab对象数组 var Tab = function (options) { return ($jQuery.extend(true, { id: 'foo', title: 'Foo' }, options)); } var Form = function (options) { return ($jQuery.extend(true, { id: 'foo', tabs:

假设我有一个表单对象,它有一个Tab对象数组

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'}
但有没有可能做到这一点:

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

是否得到相同的结果?

您可以在选项卡上循环,检查它们是否是
选项卡
对象,例如(未测试):

var Form=函数(选项){
如果(选项和选项选项卡){
var tabs=options.tabs;
对于(变量i=0,l=tabs.length;i

参考资料:

谢谢。我希望有一种简单的方法可以做到这一点,而不需要编写额外的代码来处理它。这就行了。再次感谢!
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));
}