你好我的第二个问题在这里我一直试图创建一个从头开始的点击器,这次使用设计模式但是我一直坚持这个:
var Store_Item = {
name: '',
amount: 0,
cost: {
Costs: 0
/* could ask different stuff here */
},
Get: {
GetAmount: 0
}
};
Store_Item = $.makeArray(Store_Item);
Store_Item[1] = new Store_Item {Name:"name", amount:0};
但我想打电话给费用或得到这样的话:
Store_Item[1] = new Store_Item {Name: "name", amount:0, cost:{Costs: 3}};
喜欢那个
答案 0 :(得分:2)
我认为你不理解JavaScript中的Instantiable Classes的概念......
在代码中创建一个对象,然后尝试创建它的多个实例..但是你可以,你可以使用这个。
如果你想这样做,你必须设置你的对象:
// Define
var myObject = function(arg) {
this.myProperty = arg;
this.myMethode = function () {
return this.myProperty;
}
}
// Init
var object_a = new myObject("a");
var object_b = new myObject("b");
// Use
alert( object_a.myMethode() );
在你的情况下:
// Define object
var Stored_item = function(name, amount) {
this._name = name;
this._amount = amount;
this._costs = [];
this.add_cost = function(cost){
this._costs.push(cost);
}
}
// Create array list
var stored_items = [];
// Add objects on array
stored_items.push( new Stored_item("name A", 100) );
stored_items.push( new Stored_item("name B", 550) );
// Using first object (with "name A" name)
stored_items[0].add_cost(52);
答案 1 :(得分:0)
我不确定我理解你要做什么,但是如果陈述:
Store_Item = $ .makeArray(Store_Item);
意在创建一个包含单个元素的数组,它应该是:
Store_Item = [Store_Item];
$ .makeArray有着完全不同的目的。
现在如果“声明”:
Store_Item[1] = new Store_Item {Name:"name", amount:0};
是要附加第一个对象的副本,其中一些属性已更改,这将完成工作:
Store_Item[1] = $.extend({}, Store_Item[0], {name:"name", amount:0});
等...
这有任何帮助吗?