gpt4 book ai didi

javascript - 在 javascript 中创建共存对象

转载 作者:行者123 更新时间:2023-11-28 16:39:56 26 4
gpt4 key购买 nike

是否可以在 JavaScript 中创建一个对象的多个实例,以便它们都可以同时进行操作/编辑?这与我之前的问题有关:Structure of orders in restaurant 。我想做的是让每个订单对象准备好编辑,直到客户准备好付款/离开,以便可以根据需要添加新项目或从其中删除现有项目 - 并且对于所有订单对象都必须可行同时。

如果表的数量不是很大(例如,大约 15 个),那么创建一个包含 15 个具有不同表编号的对象的静态数组会更好吗?

最佳答案

呃,是的 - 很简单(粗略的代码警告):

// your class function
function MyClass(params)
{
this.foo = params.foo;
this.bar = params.bar;
// etc...
}

// object or array to maintain dynamic list o instances
var instances = [];

// create instances in storage object
instances.push(new MyClass({foo:123, bar:456}));
instances.push(new MyClass({foo:'abc', bar:'def'}));

// or alternately by key
instances['mykey'] = new Myclass({foo:'argle',bar'bargle'});

不要创建静态数组,因为当动态结构足够简单时就没有必要。也许我在你的问题中遗漏了一些东西?

<小时/>

编辑:根据您之前的问题更新更多说明性代码,这是解决问题的另一种方法。

然而,目前这只是一种教学。如果这是真实的应用程序,我建议您使用服务器端语言对所有这些进行建模 - JS 实际上是用于控制 UI 行为而不是业务对象建模。

var Restaurant = {

Order : function (params)
{
this.id = params.id;
this.table = params.table;
this.items = [];
this.number_of_items = 0;

if(!Restaurant.Order.prototype.addItem)
{
Restaurant.Order.prototype.addItem = function (item)
{
// assuming name is unique let's use this for an associative key
this.items[item.name] = item;

this.number_of_items++;

//returning the item let's you chain methods
return item;
}
}
},

Item : function (params)
{
this.name = params.name;
this.quantity = params.quantity;
this.unit_price = params.unit_price;

if(!Restaurant.Item.prototype.price)
{
Restaurant.Item.prototype.price = function ()
{
return this.quantity * this.unit_price;
}
}
},

orders : [],

addOrder : function (order)
{
// assuming id is unique let's use this for an associative key
this.orders[order.id] = order;
//returning the item let's you chain methods
return order;
}
}

with (Restaurant)
{
with (addOrder( new Restaurant.Order({id:123, table:456}) )) // chaining!
{
addItem( new Restaurant.Item({name: 'foo', quantity: 10, unit_price: 10}) );
addItem( new Restaurant.Item({name: 'bar', quantity: 100, unit_price: 1}) );
}
}

var num_items = Restaurant.orders[123].items['foo'].price(); // returns 100

关于javascript - 在 javascript 中创建共存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1442786/

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