質問
みなさんJavascriptの 継承モデルのプロトタイプ, 私は私のスタイルの構築からクラス
var Some_Class = function() {
this.public_method = function() {
};
(function() {
// constructor
}).call(this)
}
へ
var Some_Class = function() {
(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
};
わかるが、これは良い練習ができ、がんのアクセス可能、民間からの公開方法な
var Some_Class = function() {
var private_member = 'whatever';
(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
return private_member; // not possible
};
読みを通じてサステナビリティを こちらの 閉で作成されたコンストラクタ)、次いで出てきたとのこ
var Some_Class = function() {
var private_member = 'whatever',
private_method = function(_some_value) {
// private method implementation
};
if(!arguments.callee.prototype.public_method) {
arguments.callee.prototype.public_method = function() {
private_method.call(this, private_method);
};
}
(function() {
// constructor
}).call(this)
}
しかし、何が悪い!!)やはり良いということがしたい場合はアクセス 個人会員 の方法は?
解決
の機能の範囲の変数および閉鎖ミプライベート変数/機能をできるようになっムのjavascriptます。場合には、可変ができる民間でも、思い当たらない欠点がこのアプローチが主張performantコードの一部のブラウザ/hostsには、どのように多くの閉鎖が作成され).
おとえば、private_method(およびその環境では、すべてのオブジェクト-からpublic_method閉鎖を作成し、独創性、機転の利かせ方、仕事のオブジェクトを構築し(行きのコンストラクタの試作性を設定し作成されたオブジェクト内部の試作チェーン)でのprivate_methodに使用されるだけに作成された。
ここではサンプルコードを示しよう:
var global = 1; var Some_Class = function() { var private_method = 'whatever'; var now = ++global; print("outer now: " + now ); private_method = function(_some_value) { // private method implementation print("inner now: " + now); }; if(!arguments.callee.prototype.public_method) { arguments.callee.prototype.public_method = function() { private_method.call(this, private_method); }; } (function() { // constructor }).call(this) } new Some_Class().public_method(); // outer now: 2, inner now: 2 new Some_Class().public_method(); // outer now: 3, inner now: 2 new Some_Class().public_method(); // outer now: 4, inner now: 2
せていただきましたが何を欲しがっているのか?
ごprivate_methodな参照を囲んでのオブジェクトの状態、そして大きく利益のように物事をすればよいか、また、ということがあります。
かい合って、"新規"をオブジェクト)は次の通りです:
function MyClass() { var private_var = 1; function private_func() { } this.public_func = function() { // do something private_func(); } this.public_var = 10; } var myObj = new MyClass();
下振れをこのアプローチはそれぞれの時間を構築するオブジェクト経由で、"新規"で再生するのを抑止するためには、必要かがない限り私のプロファイラからこのデザインの選択肢のニーズを最適化することも分かりやすさと優れた透明度
もあると思いますか給付コードの以下の操作を行って、そのいずれかの
(function() { }).call(this); // call the constructor
なぜ作成を別途範囲にコンストラクタ?
他のヒント
私の答えは答え:ありません蔵 private
アクセスにはJavaScriptがるので大丈夫 YAGNI.こちらはどうい private
会員が自分のコード:
function Some_Class() {
this._private_member = 'whatever';
}
Some_Class.prototype._private_method = function() {
};
ことになる。なかでジャンプを通じて競合の目的 private
ですから身を守るには...ます。
どうしてもと言うならばここに多くの時間を自分で色々と遊んでいて、毎換の閉鎖とプロトタイピングいたりしているのと同じように、最後には"ねじれのプライベートビーチがありすることが出来きます。)
ご利用動向の把握、お問い合わせいて見てみましょう JavaScriptのモジュールのパターン, ことができる民間のアクセス方法および変数内からの公益的機能など。
が鳴り響くジョン-Kugelman:れでは不可能で個人会員です。こうと思います。ものを作成する場合は筐体のようになります:
function SomeClass() {
var _private = 0;
this.public_acessor = function() {return _private};
}
ユーザーでも書き:
SomeClass._not_private_anymore = 1;
SomeClass.public_acessor = function () {return this._not_private_anymore};
最終的には、信用できな公人の同で宣言しています。ばは休憩コード、彼はます!他のユーザーいコードが便利であるとはいえるでしょう。
作品の試作品だけでなく、シングルトン.問題が入っていることが多いので、時間がサブクラスは、サブクラスは、アクセスできないのprivates