javascript - Reference (not copy) a class as a member of another Class - Mootools -
i have following classes
the box class
var box = new class({ implements: [options], options: { name: 'new', weight: 0 }, initialize: function (options) { this.setoptions(options); }, getparent: function () { return this.options.parent; } });
the collection class
var collection = new class({ implements: [options], options: { boxes: [] }, boxes: [], initialize: function (options) { var self = this; this.setoptions(options); array.each(this.options.boxes, function (box) { self.boxes.push(new box({ parent: self, name: box.name, weight: box.weight })); }); } });
i passing collection
class (as parent
) box class when created.
var newcollection = new collection({ boxes: [ { name: 'a', weight: 9 }, { name: 'b', weight: 3 }, { name: 'c', weight: 2 }, { name: 'd', weight: 5 }, { name: 'e', weight: 7 } ] });
i want parent
in box
class reference collection
class , not copy, although seems copy of newcollection
class each time box
class created (the length of boxes different each one)
array.each(newcollection.boxes, function (box) { console.log('*',box.getparent()); });
i new mootools , though have gone through documentation, way ended writing code. there more accepted coding pattern in mootools can reference parent
?
here's fiddle.
easy miss. setoptions
(docs) deep copies options object. set parent
property of box after initializing it. i've posted modified version of code here
array.each(this.options.boxes, function (box) { var nb = new box({ name: box.name, weight: box.weight }); // note difference nb.parent = self; self.boxes.push(nb); });
Comments
Post a Comment