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