Javascriptには、同じオブジェクト内の他のプロパティを参照する組み込みの方法がありません。任意のプロパティに対してこれを行うことができない理由は十分あります。したがって、this
に正しいオブジェクト値があることを確認するか、適切なオブジェクト参照を自分でどこかに保存する必要があります。
ここでは、シングルトンオブジェクトのために正常に動作され、自分自身を参照するオブジェクトを保存する方法です:
let myObj = {
text: 'abcd',
index: (req, res)=>{
console.log(myObj.text)
}
}
module.exports = myObj;
あなたは.index()
は、常にあなたのmodule.exports
(上のメソッドとして適切に呼び出されることがわかっている場合通常の場合)、=>
定義の使用を中止し、通常のfunction
定義(メソッド宣言にはほとんど常に使用する必要があります)を使用して、this
が望ましい値になります。
module.exports = {
text: 'abcd',
index: function(req, res) {
console.log(this.text)
}
}
これは限り.index()
インデックスは、このように呼ばれるように動作します:
let myModule = require('myModule');
myModule.index(req, res);
人々は、矢印構文と恋に落ち、それがメソッドの定義に使用しないことがほとんどでくださいことを忘れがちこれはメソッドの問題を引き起こすホストオブジェクトにthis
を設定しないためです。代わりに、オブジェクトのメソッドには通常のfunction
定義を使用します。
アロー機能は、通常は、コールバックは、ご使用の環境からthis
値へのアクセスを許可するコールバック関数のために非常に有用である(this
の字句値と呼ばれます)。ここではいくつかの有用な例です:一方
class Timer {
delay(t, cb) {
this.timer = setTimeout(() => {
// preserve this value inside a callback
this.timer = null;
cb();
})
}
}
それとも
// preserve this value inside a callback
let filtered = myArray.filter(item => {
return item.id !== this.master.id;
});
が、あなたはそれが通常のオブジェクトの値を上書きするための方法のための矢印宣言を使いたいんほとんどありませんthis
の場合は、this
の字句値に置き換えます。
を経由してアクセスしてみてください/ web/JavaScript/Reference/Functions/Arrow_functions)を参照してください(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)。 –
コーディング中に発見されたケースでそれを学ぶベストプラクティス:Dは私に思い出させるために感謝します。 @FelixKling –
質問を編集して全く別の質問にすると、スタックオーバーフローがうまくいかない。あなたの元の質問には、私が答えたものである 'index'の定義のための矢印構文が含まれています。あなたが私の答えを書いた後にあなたの質問を編集したとき、あなたはこの質問/回答の全体を一掃しました。しないでください。私はあなたが最初に尋ねたやり方であなたの質問を元に戻し、答えがまだ関係していることをお勧めします。さらに詳しい情報を求めたい場合は、コメントを使ってその情報を入手できるかどうかを確認するか、新しい/別の質問をする必要があります。 – jfriend00