ES2015 で使えるようになった class
ですが、JavaScriptではあくまでクラスっぽいモノ(プロトタイプ・オブジェクト)として実装されているらしいので、継承元のプロパティやメソッドを使えるsuper
がどうなってるのか気になったので調べてみたメモ。
super
const school = { school: 'スターライト学園', }; const idol_type = { __proto__: school, type: 'cute', }; const idol = { __proto__: idol_type, name: '星宮いちご', to_s() { return `${this.name} Type: ${super.type} 所属: ${super.school}`; } }; idol.to_s(); // => 星宮いちご Type: cute 所属: スターライト学園
感想
super
は該当する値やメソッドをprototypeチェーンを辿って探してくるキーワード。
ES2015から使えるようになったclassもあくまで昔やってたクラスっぽいオブジェクトの延長ナンダナって解って理解が進みました。
当時クラスっぽいものを作るのに使ってた new
は JavaScript: The Good Partsって本やブログで evil みたいな話みたことあるんだけどアレ class が出来たことによって許されたのかな??? チョット気になる。
[参考]
- クラス - JavaScript | MDN
- super - JavaScript | MDN
- The `super` keyword doesn't work as it should?
- JavaScriptのnewって本当にいらない子? - あと味
- 出版社/メーカー: レック
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
- 作者: Douglas Crockford,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/22
- メディア: 大型本
- 購入: 94人 クリック: 1,643回
- この商品を含むブログ (190件) を見る