なぜこれがundefined
です:「属性」にアクセスするとき、Javascriptオブジェクトの値は未定義ですか?
var testObj = {
CONSTANT: "blah",
someVal: this.CONSTANT
}
console.debug(testObj.someVal); // prints "undefined"
それは私が実際に新しいプロトタイプを作成していますので、this
キーワードが機能していないという事実に関係している場合、私はまた、次のことを知りたいのです: 、上記で
Test = Base.extend({
testObj: {
someVal: this.CONSTANT
}
CONSTANT: "blah";
});
var test1 = new Test();
console.debug(test1.testObj); // someVal is undefined
:私はベースを拡張するオブジェクトを持っている:私はディーンエドワードのbase.jsを使用していますが、私は上記と同様の何かをしようとしています
someVal: "blah"
これを行うと、期待どおりに動作します。なぜ私がthis.CONSTANT
にアクセスできないのか分かりません。そのthis
がtestObj
の範囲に適用されていて、Test
でない場合は、どうすればこの問題を解決できますか(that: this
変数を設定してみました。
アップデート:私はこれを間違っていると答えています。私の質問は今です:base.jsモデルを使用して、同じクラス(関数の外)内からアクセス可能な "クラスレベル"の定数を持つ方法はありますか?
良い点:2番目のケースはどうですか(これは私が本当に関心を持っているものです)。 base.js(Animalクラスの例)を見ると、Deanは "this"を使用してオブジェクト自体にアクセスします。ありがとう。 – oym
のbase.jsの例では、間違いなく私の範囲の問題のように思えます(「これは正しい範囲を参照していません」)。私はちょうどそれを修正する方法がわかりません。 – oym
2番目の例では、これはまだウィンドウです – Joe