проблема с наследованием
помогите пожалуйста разобраться с наследованием на следующем примере:
есть 2 конструктора: Game, Level. на их основе я создаю 2 объекта таким образом чтобы level наследовался от game:
var Game = function(parentGameElementTag) {
this.parentGameElementTag = parentGameElementTag;
this.gameElementId = 'game';
this.levelObj = new Level();
this.init();
};
Game.prototype = {
init: function() {
$('<div class="game" id="' + this.gameElementId + '"></div>').appendTo(this.parentGameElementTag);
}
};
var Level = function() {
var self = this;
this.fieldElementId = 'field';
this.levelScreenDisplay('body');
};
//Level.prototype = Game;
Level.prototype = Object.create(Game.prototype);
Level.prototype = {
levelScreenDisplay: function(parentElementTag) {
$('<div class="level_begin_label" id="levelBeginLabel">Уровень: ' + this.level + '</div>').appendTo(parentElementTag);
setTimeout(function() {
$('<div class="any_key_invitation" id="anyKeyInvitation">Нажмите любую клавишу для старта</div>').appendTo('#levelBeginLabel');
document.onkeypress = function() {
document.onkeypress = undefined;
$('#levelBeginLabel').remove();
};
}, 1000);
}
};
var app = new Game('body');
в результате на странице должен выводиться номер уровня. которого нет в level, но который есть в game. а благодаря наследованию он должен найтись. но не находится. в чём я ошибаюсь? |
zlodiak,
:-?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
var Game = function(parentGameElementTag) {
this.parentGameElementTag = parentGameElementTag;
this.gameElementId = 'game';
this.level = 0;
this.init();
};
Game.prototype.init = function() {
$('<div class="game" id="' + this.gameElementId + '">Game</div>').appendTo(this.parentGameElementTag);
};
Game.prototype.gameOver = function() {
$('<div class="game" >Game over!!!</div>').appendTo(this.parentGameElementTag);
};
var Level = function() {
Game.apply(this, arguments);
this.fieldElementId = 'field';
this.levelScreenDisplay();
};
Level.prototype = Object.create(Game.prototype);
Level.prototype.constructor = Level;
Level.prototype.levelScreenDisplay = function() {
var self = this;
$('<div class="level_begin_label" id="levelBeginLabel">Уровень: ' + this.level + '</div>').appendTo(this.parentGameElementTag);
setTimeout(function() {
$('<div class="any_key_invitation" id="anyKeyInvitation">Нажмите любую клавишу для старта</div>').appendTo('#levelBeginLabel');
$(document).one('keypress', function() {
$('#levelBeginLabel').remove();
self.level++;
if (self.level == 3) self.gameOver();
else self.levelScreenDisplay();
});
}, 1000);
}
Level.prototype.levelScreenDisplay
var app = new Level('body');
</script>
</body>
</html>
|
спасибо, помогло
|
| Часовой пояс GMT +3, время: 00:48. |