gpt4 book ai didi

JavaScript 相当于 jQuery 的扩展方法

转载 作者:IT王子 更新时间:2023-10-29 02:46:44 27 4
gpt4 key购买 nike

背景

我有一个函数将 config 对象作为参数。在函数中,我还有 default 对象。这些对象中的每一个都包含本质上用作函数中其余代码的设置的属性。为了避免必须在 config 对象中指定所有设置,我使用 jQuery 的 extend 方法来填充一个新对象,settings如果未在 config 对象中指定,则使用 default 对象中的任何默认值:

var config = {key1: value1};
var default = {key1: default1, key2: default2, key 3: default 3};

var settings = $.extend(default, config);

//resulting properties of settings:
settings = {key1: value1, key2: default2, key 3: default 3};

问题

这很好用,但我想在不需要 jQuery 的情况下重现此功能。是否有同样优雅(或接近)的方式使用普通的 ol' javascript 来做到这一点?


编辑:不重复的理由

此问题与“How can I merge properties of two JavaScript objects dynamically?”问题不重复。而这个问题只是想创建一个包含来自两个单独对象的所有键和值的对象 - 我特别想解决如何在两个对象共享一些但不是所有键的情况下执行此操作以及哪个对象将获得优先权(默认值)对于结果对象,如果有重复的键。更具体地说,我想解决使用 jQuery 方法来实现这一点的问题,并找到一种不用 jQuery 的替代方法。虽然这两个问题的许多答案重叠,但这并不意味着问题本身是相同的。

最佳答案

要在您的代码中获得结果,您需要:

function extend(a, b){
for(var key in b)
if(b.hasOwnProperty(key))
a[key] = b[key];
return a;
}

请记住,您在那里使用扩展的方式将修改默认对象。如果你不想那样,使用

$.extend({}, default, config)

模仿 jQuery 功能的更健壮的解决方案如下:

function extend(){
for(var i=1; i<arguments.length; i++)
for(var key in arguments[i])
if(arguments[i].hasOwnProperty(key))
arguments[0][key] = arguments[i][key];
return arguments[0];
}

关于JavaScript 相当于 jQuery 的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com