prototype.jsにはAjax.RequestやInsertion.Beforeのようにパッケージっぽい名前をもつクラスがあります。この「Ajax.」や「Insertion.」といったパッケージっぽいことを自前のクラスでも実現してみます。
次のソースコードはFooパッケージのBarクラスを定義したつもりですがエラーとなって動きません。
エラーの原因はFooが未定義のためです。ですので、次のようにFooを事前にオブジェクにしておきます。
これでエラーなく期待したとおりに動作します。
パッケージっぽいところは単なるオブジェクトだったのですね。(^^;
次のソースコードはFooパッケージのBarクラスを定義したつもりですがエラーとなって動きません。
Foo.Bar = Class.create(); Foo.Bar.prototype = { initialize: function() { }, baz: function(message) { alert(message); } }
エラーの原因はFooが未定義のためです。ですので、次のようにFooを事前にオブジェクにしておきます。
var Foo = new Object(); Foo.Bar = Class.create(); Foo.Bar.prototype = { initialize: function() { }, baz: function(message) { alert(message); } }
これでエラーなく期待したとおりに動作します。
var bar = new Foo.Bar(); bar.baz('Are you ready?');
パッケージっぽいところは単なるオブジェクトだったのですね。(^^;