JavaScriptの他の関数内から設定や値/関数にアクセスしようとしていますが、おそらく私が欠けている単純なルールがあると考えています。ここでは非常に単純化されたコードの例です:JavaScript関数内の異なる場所を参照する方法
function h(){
// example settings I want to declare for h()
this.settings = {
critical: 400,
readCritical: function(){
return this.settings.critical; // /!\ but this does not work
}
}
this.hsub = function(){
return this.settings.critical; // /!\ this does not work either
}
}
var x = new h();
console.log(x.settings.critical); // This works fine
console.log(x.settings.readCritical()); // I can *call* this fine, but it can't read outside itself
console.log(x.hsub()); // I can also call this but same problem
console.log(h.settings); // `undefined`; I understand I can't see directly into the function
あなたは、私はそれぞれの機能readCritical
とhsub
内部からアクセスしようとしているthis.settings.critical
値を、見ることができます。これどうやってするの?特にインスタンス化されたx
から。
また、2番目の質問にもかかわらず、私はthis.settings
の代わりにvar settings = {}
と宣言することをお勧めします。これは可能か、それとも好ましいのでしょうか?
'h.settings'は何を返すのですか?すべてのインスタンスの設定がまったく同じだと考えていますか?なぜなら、いくつかのインスタンスは 'x.settings.critical = 200'で区別できるからです。だから、あなたは200でいくつか、400でいくつか、そして「h.settings.critical」はどうしたらいいのですか?また、なぜあなたは 'var設定'を好むのですか?どのように '設定'を公開するのですか? – trincot
質問はたくさんありますが、 'h.settings'はオブジェクトであり、何も返さないはずですが、' x.settings.something'が値を返すようにしたいと思います。私はちょうど要素にイベントバインディングを添付するために 'h()'を呼びたいと思っていますが、 'x'で積極的に作業することはしばしばあります。私の考えでは、複数のインスタンスを独立して動作させることができれば、コードをうまく書くテストです。これまでのところ、「var設定」が好きなように、私は過去にそのように書いていますが、受け入れられた回答では、「this」を使うことはまあまあだと思います。 –
あなたはシングルトンパターンを探していますか?注:現在、 'h.settings'は存在しません。 – trincot