New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

クラスモジュール(h5.cls)の作成 #562

Closed
simdy opened this Issue Jun 1, 2016 · 2 comments

Comments

Projects
None yet
1 participant
@simdy
Member

simdy commented Jun 1, 2016

h5.cls空間にて、「クラス」の仕組みを作成する。

なお、これはJavaやC#等と完全に同等なレベルのクラスベースオブジェクト指向を実現するものではなく、
ES5、ないしES2015のclass構文に近い程度で実現できる範疇の型継承等を実現する
あくまで簡易な機構とする。

@simdy

This comment has been minimized.

Member

simdy commented Jun 1, 2016

昨今のユーザーの利用ブラウザの傾向やベンダーによるサポート期限等を鑑み、
本モジュールはIE11およびモダンブラウザでの利用を前提とする。
(IE8以下は、サポート外もしくは一部仕様制限を受けることが予想される。IE9については要検討。)

simdy added a commit that referenced this issue Jun 1, 2016

#562 クラスディスクリプタに isAbstract
指定を追加。trueにすると、そのクラスのインスタンスは作成できなくなる。デフォルトfalse。

simdy added a commit that referenced this issue Jun 2, 2016

simdy added a commit that referenced this issue Jun 3, 2016

simdy added a commit that referenced this issue Jun 3, 2016

#562 2階層以上継承した場合に、一つ上の(直上の)親クラスのプロパティを初期化していなかったバグを修正。
クラスディスクリプタのメソッド定義で関数以外を記述されたらエラーにするようにした。
ClassDescriptorにisDynamic指定を書けるようにし、明示的にtrueが指定されない限り、
インスタンス作成時にObject.seal()を行って動的なプロパティの追加・削除ができないようにした。

simdy added a commit that referenced this issue Jun 7, 2016

#562 ClassDescで、定義を「フィールド、アクセサ、メソッド」の3つに分割。
これに伴い、プロパティ名も「field, accessor, method」に変更。
(元々はアクセサは property: { prop: { isAccessor:true} } のように定義していたが、
 アクセサの場合アクセサ関数を書きたいこと、かといってそれはメソッドとは違うこと
 (参考:ES2015等ではget function prop() のようにget, setキーワードで書く))、
 フィールドの部分にアクセサの関数まで書くと長くなって見通しが良くないこと、
 アクセサとフィールドは機能的・定義可能な値としても別であることから
 分割して定義することとした。

tkmHashi pushed a commit that referenced this issue Sep 26, 2016

tkmHashi
#562 h5.cls.jsファイルを読み込んだビルドが作成できるように修正
h5-file-construction.xmlにclsモジュール定義の記述追加
build_for_js.xmlにclsモジュールを読み込む記述追加

@simdy simdy added this to the v1.3.1 milestone Apr 9, 2018

@simdy

This comment has been minimized.

Member

simdy commented Apr 9, 2018

hifive ver.1.3系にてリリース済み。

@simdy simdy closed this Apr 9, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment