【问题标题】:How is it possible to add an array argument to a constructor for an object, thus to give each object its own array?如何将数组参数添加到对象的构造函数,从而为每个对象提供自己的数组?
【发布时间】:2019-12-16 00:52:20
【问题描述】:

是否可以有一个对象构造函数,其中每个对象都有自己的数组?

如果是这样,我很难弄清楚语法。

现在我正在创建对象和一个单独的数组来共同放置 object(waiters) 数组。

function Waiter (name, orders[]) {
    this.name = name;
    this.orders = orders;
}

// Constructor for waiter object
function Waiter (name) {
    this.name = name;
}

// Waiter objects
var waiterOne = new Waiter('Timo');
var waiterTwo = new Waiter('Lucian');
var waiterThree = new Waiter('Arpi');


// Array to store waiter object 
var waiters = [
    waiterOne,
    waiterTwo,
    waiterThree
];

// Count so that the same number of arrays are create as waiters
var countWaiterOrders = waiters.length;

// Creating a order array for each waiter object
for(var i = 0; i <= countWaiterOrders; i++){
    var order = [i];
}

得到错误:

Uncaught SyntaxError: Unexpected token [

是我尝试将数组传递给构造函数时收到的错误消息。

理想的结果是每个 Waiter 对象都有自己的订单数组。

例如:

console.log(waiters[0]);

Waiter {name: "Timo", orders: []}

【问题讨论】:

  • function Waiter (name, order)的方法定义中将order[]更改为order

标签: javascript


【解决方案1】:

愚蠢的问题我只是有点卡住了你将值分配给一个空数组而不是参数。

//服务者构造函数

function Waiter (name, order) {
    this.name = name;
    this.order = [];
}

【讨论】:

    【解决方案2】:

    如果我遗漏了什么,请纠正我,但似乎你可以使用这样的东西:

    class Waiter {
          constructor(name) {
            this.name = name
            this.orders = []
          }
        }
    

    您在这里所做的是创建一个类Waiter,您将name 作为变量传递给该类。

    您可以像这样创建Waitervar waiterOne = new Waiter('Tim')

    这将允许您使用waiterOne.namewaiterOne.orders,因为订单数组是在类的构造函数中创建的。

    如果您想将所有服务员存储在数组中,最好的方法是创建一个名为 Waiters 的集合类 - 如果您想对服务员的整个集合执行一些操作,这可能很有用。

    【讨论】:

    • 当前的语法也允许您使用waiterOne.name
    • 是的,我知道。我只是想提一下,所以很明显他仍然可以在对象上使用.name
    • 谢谢@Tigger,Irek 所以如果以后我想将订单推送到各个waiters.order.Array。使用类还是对象更好?
    • @Liam :建议阅读 Object vs Class vs Function - 请也阅读 cmets - 并决定最适合您的内容。
    猜你喜欢
    • 2014-09-18
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多