使用new调用对象中的对象

时间:2014-04-14 20:11:40

标签: javascript jquery

你好我的第二个问题在这里我一直试图创建一个从头开始的点击器,这次使用设计模式但是我一直坚持这个:

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}};

喜欢那个

2 个答案:

答案 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});

等...

这有任何帮助吗?