调用JavaScript方法时绕过set参数?

时间:2017-03-09 10:24:13

标签: javascript function object methods boolean

我知道已经询问并回答了如何为javascript函数设置默认参数by Tilendor

我想知道我是否有一个包含一系列布尔值的函数 例如,一个名为“anAnimal”的函数。作为默认值,我将false值设置为三个属性。
飞,游,爬。

如果我只想向我的财产传递一个名为climb的属性,我该怎么办?

目前,在调用方法时,我必须为fly和swim传递false值,即使我已经将它们预定义为false。


这是我正在尝试的,我希望结果是真实而不是假



function anAnimal (fly = false, swim = false, climb = false) {
    this.canFly = fly;
    this.canSwim = swim;
    this.canClimb = climb;
} 

var cat = new anAnimal(true)

var theCat = 'This cat can climb: ' + cat.canClimb;

document.write(theCat);




1 个答案:

答案 0 :(得分:1)

您可以传递对象而不是参数,并根据输入填充默认选项。

function anAnimal(obj) {
  var defaults = {
    fly: false,
    swim: false,
    climb: false
  }

  //copy the values of all enumerable own properties from one or more source objects to a target object.
  Object.assign(defaults, obj);

  //Assign the values
  this.canFly = defaults.fly;
  this.canSwim = defaults.swim;
  this.canClimb = defaults.climb;
}

var cat = new anAnimal({
  climb: true
});
var theCat = 'This cat can climb: ' + cat.canClimb;
document.write(theCat);

但我建议使用setters,setClimb()