技術的なことなど
プロパティの再代入禁止を検討すると
今回は、前回の記事の技術的なことなどを詳しく考えていきます。
前回の記事でof メソッドでプロパティを指定しました。
base("$plus").of( { x: 12, y: 15, call: function() { return this.x + this.y; } } );
このプロパティの再代入禁止をどうするかについては、Object.defineProperty を使いたかったです。
base("$plus").x = 15; //プロパティの再代入を試みているので、どうにかしたい
ところが、IE8では、エラーが出ました。この関数はDOMオブジェクトだけで使えるようです (注1)。また、キャッシュがききませんので、採用をやめました。
関数型プログラミングとの関係について
関数型プログラミングというと、クロージャや関数の合成や、第一級関数やmapメソッドなどを思い浮かべる方もいるのですが、クロージャは、すでにSIEのコーディングに取り入れています。
その苦労した開発経験から、今回はこのような形になっています。
base.jsのof メソッドのアイデアとしては、「ラムダ計算の束縛変数をインターフェースとして公開する」という点です。
オブジェクト指向プログラミング + 関数型プログラミング = base.jsのようになったらいいなという気持ちで、気軽に開発していきます。
今後の予定
base.jsを使って、SMILアニメーションの実装をします。
参考
注1 Object.defineProperty
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty