gpt4 book ai didi

javascript - 如何覆盖对象变量

转载 作者:行者123 更新时间:2023-11-30 07:49:58 26 4
gpt4 key购买 nike

我想使用类似于 JQuery .ajax(..) 的语法来配置 Javascript 对象,而不是使用参数列表,只定义不同于默认值的值。
到目前为止,我是这样写的:

function ObjFn(config) {
var var1 = 200
var var2 = "qwerty"
var var3 = 555

if (config instanceof Object){
console.log("-> config")
if (config.var1 !== undefined) var1 = config.var1
if (config.var2 !== undefined) var2 = config.var2
if (config.var3 !== undefined) var3 = config.var3
}

this.describe = function(){
console.log("var1: "+var1+" - "+"var2: "+var2+" - "+"var3: "+var3+" - "+"config: "+config+"\n")
}
}

但我想知道是否可以避免编写条件列表:

if (confing.var !== undefined) var = config.var

对于每个可能的可覆盖变量,但只是以某种方式使用变量的名称。

最佳答案

您可以使用默认属性值将 config 解构为 var1var2var3 变量。如果 config 不是对象,则从空对象解构,以便使用这些默认参数:

function ObjFn(config) {
const { var1=200, var2="querty", var3=555} =
config instanceof Object
? config
: {};
this.describe = function(){
console.log("var1: "+var1+" - "+"var2: "+var2+" - "+"var3: "+var3+" - "+"config: "+config+"\n")
}
}
const instance = new ObjFn({ var1: 333 });
instance.describe();

const instance2 = new ObjFn();
instance2.describe();

如果传递的参数始终是对象,则可以改为在参数列表中解构:

function ObjFn({ var1=200, var2="querty", var3=555} = {}) {
this.describe = function(){
console.log("var1: "+var1+" - "+"var2: "+var2+" - "+"var3: "+var3)
}
}
const instance = new ObjFn({ var1: 333 });
instance.describe();

const instance2 = new ObjFn();
instance2.describe();

关于javascript - 如何覆盖对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744798/

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