コードベースでは、多くの開発者が一般利用を妨げるためにメンバー変数の最初の文字としてアンダースコアを使用することがわかりました。通常は、オブジェクトのメソッドからアクセス可能なローカル変数を宣言するのが良い習慣ですが、私たちの場合、すべてのメソッドがプロトタイプで定義されているため、これは可能ではないようです。ここに例があります。プロトタイプオブジェクトを使用する際の情報の隠蔽
MyContrivedWidget = function(container) {
this._container = jQuery(container);
}
MyContrivedWidget.prototype = {
draw: function() {
var link = jQuery(document.createElement('a'))
.html('some contrived text')
.attr('href', '#')
.appendTo(this._container);
}
}
我々はプロトタイプオブジェクトを使用するための複数の理由がありますが、最も説得力はプロトタイプチェーンを使用する方法の簡単な継承とオーバーライドを可能にすることはおそらくです。あるプラットフォーム上に複数の製品があり、特定の機能をオーバーライドしながら多くのJavaScriptを再利用することができます。
私の質問は、プライベートにする必要のある変数に公的にアクセスできるようにすることなく、プロトタイプチェーンのメリットをどのように得ることができるのでしょうか?
ありがとうございました。私はその本を読んで、それが非常に有用であることを発見しましたが、私は、継承と情報隠蔽の両方を許可するという私の問題に対する解決策を見出しませんでした。あなたが何か具体的なことを挙げることができれば、それは非常に高く評価されるでしょう。 – Samo
@Samo:私が正しく覚えていれば、Crockfordはメソッド的なパターンのオブジェクトインスタンス間の '共有データ 'の良い例を挙げています。 – jAndy
@Samo:しかし、私はかなり基本的な例を追加しました。 – jAndy