function logMsg(str, noBreak) { var msg = $('#message'); msg.append(str); if (!noBreak) // if noBreak is asigned a value (any value), <br /> won't be output msg.append('<br />'); } function inheritPrototype(subType, superType) { var prototype = Object(superType.prototype); //create object prototype.constructor = subType; //augment object subType.prototype = prototype; //assign object } function Chessman (type) { this.type = type; this.id = 'unnamed'; this.position = []; this.isAbroad = false; this.color = ''; } Chessman.prototype = { constructor: Chessman, move: function (newPosition) { if (newPosition) { logMsg(this.id + ' moved to [' + newPosition + '] from [' + this.position + '].'); this.position = newPosition; return this; } } } function Soldier (position) { Chessman.call(this, 'Soldier') this.position = position; }; inheritPrototype(Soldier, Chessman); Soldier.prototype.isValidMove = function(currentPosition, newPosition) { return true; } var Soldier1 = new Soldier([0, 3]); Soldier1.id = 'Soldier1'; Soldier1.color = 'Red'; Soldier1.move([0, 4]); logMsg('Soldier1\'s current position is [' + Soldier1.position + '].'); var Soldier2 = new Soldier([2, 3]); Soldier2.id = 'Soldier2'; Soldier2.color = 'Red'; Soldier2.move([2, 4]); logMsg('Soldier2\'s current position is [' + Soldier2.position + '].'); logMsg('Soldier1\'s current position is [' + Soldier1.position + '].');
<div id="message" />
body { font-family: Verdana, Arial; font-size: 1.1em; }