「これを返す」という明らかにモジュールパターン内でローカル機能を処理する方法
-
12-12-2019 - |
質問
私は明らかにモジュールのパターンが好きです。私は公開して返品したいのは私的な機能を持っています。しかし、私は「これを返す」...
var player = function(){
//my local variable scope...
oplayer.damage = function(){
if(!this.grace){
this.shield--;
if (this.shield == 0){
return this;
}
}
};
...
return {
damage : oplayer.damage
}
}();
.
明示的に何かを返しているのであれば「これを返す」ことはありませんか?(明らかなモジュールパターンを使用するためのコンテキストで)そうでなければ、私のローカル関数Oplayer.Damageを適切なコンテキストで使用するにはどうすればよいですか?アドバイスをありがとう!私はちょうど「この復帰」の概念全体の周りに私の心を包み込もうとしています。
解決
「これ」は実行にコンテキストであるため、大丈夫です。「カットダウン」オブジェクトの一部である公開機能にこれを返すので、カットダウンオブジェクトのみが取得されます。だから、私はあなたが次のシナリオを考えるならば、あなたがしようとしていることをうまくいくと思います:
var test = function(){
var pri = function(){
console.log("Private");
};
var pub = function(){
pri();
console.log("pub");
return this;
}
return {
pub: pub
};
}();
console.log(test.pri); //-> undefined
console.log(test.pub); //-> function(){…}
console.log(test.pub()); //-> "Private" "pub" [Object {…}]
console.log(test.pub().pri); //-> "Private" "pub" undefined
. 他のヒント
最初にthis
キーワードが何であるかをチェックしてください。 > MDN の良い紹介
明示的に何かを返しているのであれば「これを返す」ことはありませんか?
はい、もちろん。これはメソッドのChoeabilityのデフォルトのパターンです - すべてが呼び出されたオブジェクトを返します。ただし、シールドが停止しているときだけでなく、すべての場合に返却する必要があることに頼る必要があります。
これがあなたの目的ではなかった場合は、通常のreturn;
ステートメントを使用するだけです(Returnステートメントのようなundefined
の結果)。
明らかにモジュールパターンを使用することと
その機能を定義した場所では関係ない。
私の関数を適切な文脈で使用するように変換しますか?
( " context "ここではthis
オブジェクトを参照)
本当に、this
の値は常に関数の呼び出しによって異なります。もちろん、 .bind()
の関数player
オブジェクトまたは直接player
の代わりにthis
を返すだけです。