オブジェクトを学ぶ クラス、継承、データ、constructor、メソッド
ハンズオンJavaScript (あんどうやすし(著)、オライリー・ジャパン)の4章(オブジェクトを学ぶ)、4.8(練習問題)の4-1、2、3の解答を求めてみる。
コード
console.log('4-1')
class User {
constructor(id, name) {
this.id = id;
this.name = name;
}
post() {
console.log(`${this.id} ${this.name}: 記事を投稿`);
}
}
class Administrator extends User {
constructor(id, name) {
super(id, name);
}
publish() {
console.log(`${this.id} ${this.name}: 記事を公開`);
}
}
let user = new User('1', 'name1');
user.post();
let admin = new Administrator('2', 'name2');
admin.post();
admin.publish();
console.log('4-2');
for (let u of [user, admin]) {
console.log(u);
console.log("User", u instanceof User);
console.log("Administrator", u instanceof Administrator);
}
console.log('4-3');
let user1 = {
id: 10,
name: "name10",
post() {
console.log(`${this.id} ${this.name}: 記事を投稿`)
}
},
admin1 = {
__proto__: user1,
publish() {
console.log(`${this.id} ${this.name} 記事を公開`)
},
};
user1.post();
admin1.post();
admin1.publish();
入出力結果(Terminal, Zsh)
% node sample1.js
4-1
1 name1: 記事を投稿
2 name2: 記事を投稿
2 name2: 記事を公開
4-2
User { id: '1', name: 'name1' }
User true
Administrator false
Administrator { id: '2', name: 'name2' }
User true
Administrator true
4-3
10 name10: 記事を投稿
10 name10: 記事を投稿
10 name10 記事を公開
%