Javascript 如何在脚本插件中使用默认值

Javascript 如何在脚本插件中使用默认值,javascript,Javascript,使用具有一些默认值/设置的小型vanilla js插件。因为默认值不在1层中(或者你怎么称呼它),我很难让它工作。我在网上找到了一个解决方案来解决这个问题,但是我现在使用的结构无法解决这个问题 var extend = function () { var merged = {}; Array.prototype.forEach.call(arguments, function (obj) { for (var key in obj) { if (!obj.hasOwnPr

使用具有一些默认值/设置的小型vanilla js插件。因为默认值不在1层中(或者你怎么称呼它),我很难让它工作。我在网上找到了一个解决方案来解决这个问题,但是我现在使用的结构无法解决这个问题

var extend = function () {
var merged = {};
Array.prototype.forEach.call(arguments, function (obj) {
    for (var key in obj) {
        if (!obj.hasOwnProperty(key)) return;
       merged[key] = obj[key];
     
    }
});
return merged;
};
上述解决方案仅适用于

var settings = {
   name:'john',
   age:'33'
   ...
}
这就是我现在使用的结构

var settings = {
person:[
    {                                   
        name:'john',
        active: 'yes'       
        skills:[
            {
                sports: 'no',
                drinkbeer: 'yes'
            }
        ]
    },
    {                                   
        name:'mary',
        active: 'no'       
        skills:[
            {
                sports: 'yes',
                drinkbeer: 'maybe'
            },
            {
                sports: 'yes',
                drinkbeer: 'maybe'
            }
        ]
    },
],
someValue: 'hello'
}
//正在运行的插件缺少一些值,应使用上述设置替换这些值

var person = new person({
    person:[
        {                                   
            name:'john',
            active: 'yes'       
        },
        {                                     
            skills:[
                {
                    sports: 'yes',
                    drinkbeer: 'maybe'
                },
                {
                    sports: 'yes',
                    drinkbeer: 'maybe'
                }
            ]
        },
    ],
    someValue: 'hello'
    }
});

你的问题不清楚

如果您想完整地获取个人数据,为什么不使用

let merged = settings.peron.find(x => x.name == name);
// name is the variable you should pass as function argument.
// I used name but of course you should use something unique.
如果您想获取这些值并将它们与另一个对象合并,那么

let otherObject = { team: "teamName", color: "green" }
如果没有Commo键,则可以执行此操作:

let mergedObject = {...merged, ...otherObject};

如果你想做其他事情,你需要在你的问题中添加所有这些细节。你想实现什么?

不,这个想法就像jQuery插件一样,你可以在初始化插件时使用defauls/settings值。但是当在init调用中不使用值时,应该使用插件本身提供的默认值。抱歉,很难为我解释,因为我不知道这些东西是如何被调用的,这就是我得到扩展函数的地方