シンプルなので、Javascriptで「保護された」可視性をどうにかエミュレートできますか?私たちはJavaScriptでプライベートIDを持つことができますが、保護されたIDはどうですか?
答えて
はこれを行います。
/* Note: Do not break/touch this object */
...code...
やGoogleのビットは、最初のページにこれを見つけた:
http://blog.blanquera.com/2009/03/javascript-protected-methods-and.html
この男がやっていることは、彼が「これ」に電話機能と同じ方法を持っているかどうかを知るためにちょっとしたタイピングをしているだけです。 –
私が言っていることは、あなたが本当にあなたの保護されたものを保護することができるとは思わないということです:P –
@Pablo、私は全く同意します...しかし、その動作を具体的なセマンティクスとして望むなら、JSあなたが望む言語ではありません:P –
それはおそらく何を意味するのだろうか? クラスがありません。
caller
を分析して、メソッドの呼び出しが許可されているかどうかを判断することができます。これは隠されて非効率的であり、あなたの基準は常にスプーフィング可能です。
真実ではありません。 Javascriptでは_everything_はオブジェクトです。受動的な構文ではなく、アクティブな構文を使用してクラスを定義します。構成と宣言。 – Christopher
@Christopher ...プロトタイプがクラスではないということは間違っています。それらもインターフェイスですか? –
さて、大丈夫です。しかし、私が意味するのは、オブジェクトが属しているかどうかを知ることができるエンティティ分類の名前空間を持たないことです。継承者のように見せたいものから継承者に伝えることはできません。 – chaos
ここで言及する価値のあるパターンがあります:JavaScriptコンストラクタ関数はオブジェクトを返す可能性があります(必ずしもthis)。 "実際の"インスタンスオブジェクトの "実際の"メソッドにプロキシメソッドを含むプロキシオブジェクトを返すコンストラクタ関数を作成することができます。これは複雑に聞こえるかもしれませんが、そうではありません。ここでのコードスニペットです:
var MyClass = function() {
var instanceObj = this;
var proxyObj = {
myPublicMethod: function() {
return instanceObj.myPublicMethod.apply(instanceObj, arguments);
}
}
return proxyObj;
};
MyClass.prototype = {
_myPrivateMethod: function() {
...
},
myPublicMethod: function() {
...
}
};
いいところは、私たちが保護されたメソッドの命名規則を定義する場合、プロキシの作成を自動化することができるということです。私はちょうどこれを行う小さなライブラリを作成しました:http://idya.github.com/oolib/
- 1. 私たちはいつプライベートか保護された使用を検討すべきですか?
- 2. 私たちはアプリ内で2タブビューを持つことができますか?
- 3. タッチIDで保護されたキーチェーンアイテムが存在するかどうかを確認しますか?
- 4. どのように私はそれらのidでjavascriptテンプレートを読み込むことができますか?
- 5. R.javaの保護されたAndroid ID
- 6. 私は抽象クラスでプライベート最終フィールドを持つことができます
- 7. Doxygenが保護されたメンバーを出力できないようにすることはできますか?
- 8. 私はC#から暗号化されたIDを持っています。どのようにiphoneでこのIDを復号化できますか
- 9. JavascriptはIDで要素を見つけることができませんか?
- 10. 私たちは.netウィンドウアプリケーションでjavascriptを実行することができます
- 11. asp.netは<tbody id = "blah" runat = "server">を持つことができますか?
- 12. DailymotionでビデオのプライベートIDを削除することはできますか?
- 13. はjavascriptを動作させることができませんが、それはIDの問題ですか?
- 14. 私はJavaScriptのリスナーからの変数(ID)を渡すことができますどのようにルビーオンレールコントローラ
- 15. 私たちはカスタムマーカーインターフェイスを書くことができます
- 16. 私たちがpython Igraph v1.7で頂点オブジェクトを持っていれば、頂点IDを見つけるにはどうすればいいですか?
- 17. は、私たちがこれを行うことができますJavaではJavaの
- 18. CA1062保護されたイベントハンドラの引数を検証しますか?私たちは、保護されたイベントハンドラでのEventArgsをチェックしない場合は
- 19. どのように私は独立したスクロール列を持つgridviewを持つことができます
- 20. 項目IDがリモートデータベースのIDと同じであるListViewを持つことは可能ですか?
- 21. どのように私はLinuxでヒープメモリを保護することができますか?
- 22. Magento 2 - オーダーオブジェクトからオーダーIDとプロダクトIDを取得していますか?私は、Magentoの2に取得することができますどのように私は順序オブジェクトから製品IDと顧客IDを取得したいオブザーバーで
- 23. どのように私たちはAndroidで場所を見つけることができます...?
- 24. 要求ダイアログ - 私の友人は私が招待を受け入れたとき、私は敬遠しがちリクエストIDを取得するようにSender IDの
- 25. 保護されたコンストラクタを持つシングルトンクラス
- 26. 私はちょうどffmpegを使うことができますか?
- 27. プライベートAPIを保護するにはどうすればいいですか
- 28. アクセスPrimeFacesは、私はID「保存」を持つビューで次のコマンドボタンを持つアクションリスナー
- 29. どのように私はリピータからの画像IDをC#で得ることができますか?
- 30. jbossがダウンロードされましたが、私はどこで仕事を始めることができますか
私は主なポイントは、JavaScriptのような言語であなたがそこに障壁を置くことができると思う...しかし、それは土嚢のようなものです...それは水浸漬を停止しない可能性がありますあなたのカーペット:P –
私は被災者が非難されていると信じており、それは人々がこれを行うために頼りにしているようだ。 – Nosredna