クラスオブジェクト内にif/elseステートメントがあります。ifはブールステートメントをチェックしますが、間違った結果を返します。
function person(name) {
this.name = name;
this.age = (function age() {
if (this.name.toLowerCase().charCodeAt(0) <= "n".charCodeAt(0)) {
return "A";
}
else {
return "B";
}
})();
}
var zoey = new person("Zoey");
console.log(zoey.name);
console.log(zoey.age); // returns A
console.log("Zoey".toLowerCase().charCodeAt(0)); // returns 122
console.log("n".charCodeAt(0)); // returns 110
booleanステートメント内の「this.name」を単に「name」に変更すると機能します。なぜですか?