在Javascript构造函数中将键/值对象作为参数传递

卡尔·爱德华兹

我正在设置一个对象构造函数,并希望将键/值对象作为参数传递。我想知道这样做的正确方法是什么?现在,我只是将键作为参数传递:

(function() {
    function Venue(name, poor, satisfactory, excellent) {
        this.name = name;
        this.serviceRatings = {
            poor: poor,
            satisfactory: satisfactory,
            excellent: excellent
        };
    }

  var dining = new Venue("dining", .1, .15, .2);

  console.log(dining["serviceRatings"]["satisfactory"] // .15
}());

尽管这是可行的,但它来自Ruby背景,只是传递对象本身并在初始化程序中分配其值才是正确的选择。这是我能想到的最好的选择:

class Venue
  def initialize(name, serviceRatings = {})
    @name = name
    @poor = serviceRatings[:poor]
    @satisfactory = serviceRatings[:satisfactory]
    @excellent = serviceRatings[:excellent]
  end
end

有没有办法用Javascript做到这一点?现在,我编写事情的方式使我感到好像在膨胀构造函数的参数列表(除非这正确的方法)。

宝ao

您可以像在ruby类中一样传递对象。

function Venue(name, options) {
    this.name = name;
    this.serviceRatings = options;
}

var dining = new Venue("dining",{
        poor: .1,
        satisfactory: .15,
        excellent: .2
    });

上面将创建与以前相同的输出。值得一提的是ecmascript 2015将类引入了javascript-因此您也可以这样编写:

class Venue {
    constructor(name, options = {}) {
        this.name = name;
        this.serviceRatings = options;
    }
}

在上方,我们使用一个空对象作为default parameter,这也是es2015的功能。

如果您想拥有默认的键名,可以使用类似的名称

class Venue {
    constructor(name, options = {}) {
        this.name = name;
        this.serviceRatings = Object.assign({
           poor: undefined,
           satisfactory: undefined,
           excellent: undefined
        }, options);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在构造函数中将对象作为参数传递

在Flutter中将构造函数作为参数传递

在Javascript中将对象作为参数传递给函数

将对象作为构造函数的参数传递

C++,在另一个对象构造函数中将对象作为参数传递

在JavaScript中将多个对象作为参数传递

在JavaScript中将数组作为函数参数传递

在自己的构造函数中将“ this”作为参数传递是不好的做法吗?

在构造函数错误中将类指针作为参数传递

如何在javascript函数中将JSON对象作为函数参数传递?

将对象作为参数传递给构造函数?

参数作为对象传递时的 Typescript 构造函数简写

解构分配以在Javascript行为中将对象作为函数的参数传递

在Kotlin中将侦听器对象作为函数参数传递

在Numba优化的Python中将类对象作为函数参数传递

如何访问JavaScript构造函数对象作为IFFI函数参数?

如何在Javascript中将对象的方法作为参数传递

是否可以在JavaScript函数中将变量作为参数传递?

无法在 Javascript 中将数组作为函数参数传递

在JavaScript中将数组作为内置函数参数传递

Javascript:当对象拥有函数时,为什么在apply方法中将相同的对象作为参数传递?

为什么不能在C ++中将函数求值作为构造函数参数传递?

在go函数中将函数作为参数传递

对象的构造函数作为函数参数

在地图的箭头函数中作为参数传递的对象中的键值分配

从构造函数作为列表参数传递

传递枚举类型作为构造函数参数

传递整数作为构造函数的参数

javaScript-将对象作为函数参数传递