プロトタイプにも関数で作成されたプロトタイプDOM要素を割り当てる必要があります。DOMからコンストラクタプロトタイプへの要素の割り当て
私は以下のコメントにすべて説明しました。
要約:私のプロトタイプ関数は、DOM要素を生成し、本体に入れ、プロトタイプのプロパティなどにすぐに参照を割り当てます。 Game.prototype.boxes = //新しく作成されたDOM要素。
function Game() {
this.class = 'box';
// this.boxes = this.createBoxes(); // It almost works, but isn't on prototype and is duplicated, when I create instance of Monstar class.
}
// Game.prototype.boxes = this.createBoxes(); // I know, in this context 'this' isn't my constructor, but this is method I want to achieve
// Game.prototype.boxes = $('.' + this.class); // As above - 'this' isn't my constructor
Game.prototype.boxes = Game.prototype.createBoxes(); // Alternative test from the lines above. It have to be on my prototype.
Game.prototype.createBoxes = function() {
var docFragment = document.createDocumentFragment();
for(var i = 0; i < 20; i++) {
var elem = $('<div>', {
class: this.class
});
elem.appendTo(docFragment);
}
$(docFragment).appendTo($('body'));
return $('.' + this.class);
};
function Monster() {
Game.call(this);
console.log(this.boxes); // Finally this should returns array with my DOM elements created using prototype createBoxes function.
}
Monster.prototype = Object.create(Game.prototype);
Monster.prototype.constructor = Monster;
var game = new Game(),
monster = new Monster();
console.log(game.boxes); // Finally this should returns array with my DOM elements created using prototype createBoxes function.
おかげで任意のヘルプ:)
、ないグローバル/静的なプロトタイプに:
ここではその変化との完全なコードですか?なぜDOM要素を共有したいのですか?通常、それはまさに私たちが避けたいものです。 – Bergi