開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Node.js, Safari(JavaScript エンジン)
- Learning JavaScript [邦訳](参考書籍)
メタプログラミングRuby 第2版(Paolo Perrotta (著)、角 征典 (翻訳)、オライリージャパン)の1部(メタプログラミング Ruby)、5章(木曜日: クラス定義)、5.1(クラス定義のわかりやすい説明)、5.1.1(クラス定義の中身)、5.1.2(カレントクラス)、5.1.3(クラスインスタンス変数)を JavaScript で取り組んでみる。
HTML5
<pre id="output0"></pre> <button id="run0">run</button> <button id="clear0">clear</button> <script src="sample1.js"></script>
JavaScript
let btn0 = document.querySelector('#run0'), btn1 = document.querySelector('#clear0'), pre0 = document.querySelector('#output0'), p = (x) => pre0.textContent += x + '\n'; let addMethodTo = (aClass) => { aClass.prototype.m = () => 'Hello!'; }; let MyClass1 = (my) => { let that = {}, myVar = 1, read = () => myVar, write = () => myVar = 2; that.read = read; that.write = write; return that; }; let output = () => { p('5.1.1 クラスの定義の中身'); let MyClass = (() => { p('Hell'); return () => { let that = {}, toString = () => 'myClass'; that.toString = toString; return that; }; })(); let obj = MyClass(); p(obj); p('5.1.2 カレントクラス'); p('class_eval'); addMethodTo(String); p('abc'.m()); p('5.1.3 クラスインスタンス変数'); MyClass1.myVar = 1; MyClass1.read = () => MyClass1.myVar; obj = MyClass1(); p(obj.read()); obj.write(); p(obj.read()); p(MyClass1.read()); }; btn0.onclick = output; btn1.onclick = () => pre0.textContent = ''; output();
0 コメント:
コメントを投稿