-6

次のようなことは可能ですか?

var obj = {
    data:'some data',
    init:function(){
        console.log(this.data);
        console.log(obj.data);
    }
}
obj.init();

ここではconsole.log(this.data)console.log(obj.data)両方とも同じ値を返します。

に保存したthisような変数に保存することは可能ですか?'some data'data

どういうわけか、に保存thisするとしましょう$this。次に、のconsole.log($this.data)ように動作するはずconsole.log(this.data)です。

4

3 に答える 3

2

なぜあなたが求めていることをやりたいのかわかりませんが、そうです、あなたはそれを行うことができます:

var obj = {
    data:'some data',
    init:function(){
        this.self = this;
        console.log(this.data);
        console.log(obj.data);
        console.log(this.self);
    }
}
obj.init();

これを実行しようとしている理由を説明すると、おそらくより適切にアドバイスできます。インスタンス変数を取得するにはの値がすでに必要であるためthis、の値をインスタンス変数に保存する理由はほとんどありません。this

于 2012-06-20T21:29:36.947 に答える
1

のように...割り当て?

var $this = this;

編集:あなたがこのようなことを意味する場合:

var obj = {
    selfReference: this
};

いいえ、それは不可能です。後で割り当てる必要があります。

var obj = {};
obj.selfReference = obj;

でも、そもそもなぜそんなことをしたいのかわかりません。

于 2012-06-20T21:29:11.680 に答える
1

this関数スコープの問題を回避するために、JavaScript では頻繁に保存が行われます。多くの場合、格納に使用される変数は次のようにthis呼び出さthatれます。

var that = this

を使用して、呼び出している関数の this オブジェクトを設定することもできます

myFunction.call(myCustomThisReference, param1, param2)

また

myFunction.apply(myCustomThisReference, [param1,param2]

詳しくはお電話お申し込みください

于 2012-06-20T21:31:17.757 に答える