我想使用类似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")
}
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有可能避免编写条件列表:
if (confing.var !== undefined) var = config.var
Run Code Online (Sandbox Code Playgroud)
对于每个可能的可覆盖变量,但只是以某种方式使用变量的名称.
你可以解构config到var1,var2和var3变量,使用默认属性值.如果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();Run Code Online (Sandbox Code Playgroud)
如果参数(如果传递)将始终是对象,则可以在参数列表中进行解构:
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();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |