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 />');
}

// 方法一
var Chessman1 = { 
    name: "empty",
    location: {},
    isAbroad: false
};

logMsg('<br />方法一: Chessman1 的建構子是:<br /> ' + Chessman1.constructor);

// 方法二 
function Chessman2 (name, location, isAbroad) {
    this.name = name;
    this.location = location;
    this.isAbroad = isAbroad;
    this.color = 'Black';
}

Chessman2.prototype = {
    //constructor: Chessman2, // 拿掉這一行開頭的註解以覆寫建構子; 你可以觀察到差異。在實際使用時, 其建構子必須被覆寫
    move: function () {
        logMsg(this.name + ' moved.');
    }
}

var Soldier = new Chessman2('Soldier', [], false);

logMsg('<br />方法二: Soldier 的建構子是:<br /> ' + Soldier.constructor);

// 方法三
var Chessman3 = function() { 
    name = "empty";
    location = {};
    isAbroad = false;
};

logMsg('<br />方法三: Chessman3 的建構子是:<br />' + Chessman3.constructor);
logMsg('Chessman3 的 prototype 是:<br />' + Chessman3.prototype.constructor);

// 方法四
function Chessman4 () { 
    name = "empty";
    location = {};
    isAbroad = false;
};

logMsg('<br />方法四: Chessman4 的建構子是:<br /> ' + Chessman4.constructor);
logMsg('Chessman4 的 prototype 是:<br />' + Chessman4.prototype.constructor);

<div id="message" />
body {
    font-family: Verdana, Arial;
    font-size: 1.1em;
}