0

私は明らかになったモジュールパターンとプロトタイプのクラスパターンを見てきました。私は、2つを一緒に明示的なクラスパターンに適合させるようにしました。私は、このパターンの問題があるのか​​、うまくいかないのかを把握しようとしています。オブジェクトのコンストラクタがtypeof "function"である限り、私は問題はないと思います。クラスパターンとプロトタイプメソッドの公開?

私が思いつくことができる唯一の注意点は、新しいクラスが作成されるたびにプライベート関数が作成される大量のインスタンス化されたクラスです。これにより、何千ものインスタンス化でメモリの問題が発生する可能性があります。しかし、メモリに蓄積されない大規模なクラスの場合、私の考えはコードの可読性が向上し、セキュリティにはメリットがあるかもしれません。関数を非公開にし、それらを明らかにすることにより、難読化器は内部関数をすべて最小限に抑え、目を引くのが難しくなります。確かに、それは完全ではありませんが、保護の余分な層です。さらに、関数内部で作業することができれば、クラス内で数百回の「this」が削除されます。おそらくそれは小さな利点ですが、複雑なコードの場合は読みやすさが向上します。誰もがパターンに大きな問題を見ていますか?

//standard pattern 

var MyClass = function() { 
    this.func1 = function() { 
     //dostuff 
    }; 
}; 
MyClass.prototype.func2 = function() { 
    this.func1(); 
    //dostuff 
}; 

-

//revealing class pattern 

var MyClass = function() { 
    function privateFunc() { 
     //dostuff 
    } 

    function publicFunc() { 
     privateFunc(); 
     //dostuff 
    } 

    this.publicFunc = publicFunc; 
}; 
+0

あなたの作品*を使用してください*。絶対的なものはありません。 – zerkms

+1

[JavaScriptで 'prototype'と 'this'の使用?](http://stackoverflow.com/q/310870/218196)と他のリンクされた質問を参照してください。 –

答えて

1

私は暴露のモジュールパターンと同様に、プロトタイプクラスのパターンを見てきました。私は、2つを一緒に明示的なクラスパターンに適合させるようにしました。

あなたは本当にクラスを明らかにし、それらを組み合わせた明らかPrototypeパターンを見ている必要があります。あなたが現在持っているものは、むしろ「明らかにするインスタンスパターン」と呼ばれるべきです。

パターンに大きな問題はありますか?

あなたは大きな注意点を既に述べていますが、それが価値があると考えるなら、それを検討してください。ほとんどのクラスがであることを考えると、非常に大きなボリュームでインスタンス化されたではなく、実際にはそれ以上の違いはありません。

しかし、パターンを改善することができます。プロトタイプをもう使用しないことを考えれば、それを保つ理由はありません。 new演算子を削除し、コンストラクターでthisキーワードを使用してドロップし、オブジェクトリテラルを返します。 Voilá、あなたはファクトリ関数を持っています!

関連する問題