は、次のように私はカスタムオブジェクト/ javascriptの「クラス」(エアクオート)を作成するとします。カスタムオブジェクトをjavascriptのオブジェクトのプロパティとして使用できますか?
// Constructor
function CustomObject(stringParam) {
var privateProperty = stringParam;
// Accessor
this.privilegedGetMethod = function() {
return privateProperty;
}
// Mutator
this.privilegedSetMethod = function(newStringParam) {
privateProperty = newStringParam;
}
}
その後、私は、私は簡単にそのリストから物事を追加または削除することができ、これらのカスタムオブジェクトのリストを作りたいです。私は、カスタムオブジェクトのリストを格納するための方法として、オブジェクトを使用することにしたので、私は
var customObjectInstance1 = new CustomObject('someString');
var customObjectInstance2 = new CustomObject('someOtherString');
var customObjectInstance3 = new CustomObject('yetAnotherString');
myListOfCustomObjects[customObjectInstance1] = true;
myListOfCustomObjects[customObjectInstance2] = true;
myListOfCustomObjects[customObjectInstance3] = true;
でリストにカスタムオブジェクトを追加し、
delete myListOfCustomObjects[customObjectInstance1];
で、リストからカスタムオブジェクトを削除することができますが、もし私は「i.privilegedGetMethodは()関数ではありません」と言うFirebugのコンソールでエラーになるだろう
for (i in myListOfCustomObjects) {
alert(i.privilegedGetMethod());
}
でリストを反復してみてください。この問題やjavascriptのイディオムを修正する方法はありますか?申し訳ありませんが、これはばかな質問ですが、私はjavascriptには新しく、役に立たないと私の問題への解決策のためにインターネットを精査しています。どんな助けもありがとう!
P.S.私の例は非常に単純化されており、private.propertyなどを使ってprivatePropertyをパブリックにすることはできますが、それでもアラートでは未定義になり、カプセル化しておきたいと思います。
私はここで何を達成しようとしているのかはよく分かりませんが、構文エラーがあるので、あなたのコードは動作してはいけません。具体的には、コンストラクタを '()'の代わりに '[]'で呼び出す方法です。 – ZenMaster
申し訳ありませんが、それはタイプミスでした。私は括弧を固定 – user1030342
私はカスタムオブジェクトのリストを作成し、それらの特権メソッドへのアクセスを維持しながらそれらを反復する方法を探しています。 – user1030342