Edit in JSFiddle

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