2017-03-15 4 views
1

私の質問は、メソッドの中でオブジェクトリテラルを使用するときに私は 'this.something = ...'を行っている人々を参照していますこれはObjectリテラルでは何と呼ばれていますか?

そしてオブジェクト全体でそれを参照しています。これの名前は何ですか?

以下の例では、 'CacheDom'メソッドを見た場合、this.button = document.getElementById( 'submit') 'は後で使用できる参照を与えます。

私は 'this'キーワードの基礎を理解していて、そのオブジェクトに参照することになりますが、要素などを保存して後で参照できることは奇妙です。

本質的にこれの公式の用語は何ですか?

おかげ

https://jsfiddle.net/rvs6ymqj/

HTML

<body> 
    <button id="submit" type="submit">Submit</button> 
</body> 

JS

それは言語ごとに異なり
var obj = { 
    init: function() { 
    this.cacheDom(); 
    this.bindEvents(); 
    }, 

    cacheDom: function() { 
    this.button = document.getElementById('submit'); 
    }, 

    bindEvents: function() { 
    this.button.addEventListener("click", function() { 
     console.log("we clicked the button"); 
    }) 
    } 
} 

obj.init(); 
+0

オブジェクト指向プログラミング? –

+1

「this」の正式な用語は「this」です。一部の人々は公式でも正確でもない「文脈」と言う。もっと正確なのは「受信機」かもしれないが、それも公式ではない。 * "しかし、要素などを格納して後で参照することができるのは奇妙だと分かった" * 'this'の値がオブジェクトであれば、オブジェクトにプロパティを代入するだけです。これは、 'this'の代わりに' obj'を使うことと変わらない、 'obj.foo = 42;'( 'obj'がオブジェクトを参照する場合)です。 –

+0

ねえ、ええ、それはあなたが 'オブジェクトにプロパティを割り当てる'と言ったときに意味がありました。私はそれがそういうものを追加するのではなく、コロンを使って常にプロパティを定義するのに慣れていたからだと思います。 ありがとう! –

答えて

1

。 Javascriptでは、propertyと呼ばれています。 Javaでは、彼らはfieldsです。 C++はまたフィールドを呼び出しますが、data membersと呼ばれることもあります。

JSは、JavaとC++でフィールドを宣言しなければならないという点で、他の2つのJSとは大きく異なりますが、JSメンバーはその場で定義されます。実際には、JSオブジェクトはキーから値へのマッピングにすぎず、プロパティはキーです。

1

オブジェクト指向プログラミングでは、 "this"は内部にあるオブジェクトを指します。あなたは "this"にプロパティを格納していません。グローバル変数/コンストラクタパラメータと同じ名前のインスタンス変数を区別する方法です。

「これは」通常、現在のオブジェクト

を指し不変の参照やポインタである:私は、特定の名前が「これは」が、このフレーズはうまくそれを合計する概念のためにないと思います

https://en.wikipedia.org/wiki/This_(computer_programming)

Javascriptの固有の説明:

はJavaScript

グローバル・スペース内の関数の外で使用する場合、これは の囲みオブジェクトを指します。この場合、囲むブラウザー・ウィンドウであり、 ウィンドウ・オブジェクトです。グローバル のスペースで定義された関数で使用された場合、その関数がどのように呼び出されるかは、関数 が呼び出されることによって決まります。このような関数が直接呼び出されると(f(x)など)、これは関数が定義されているグローバル空間を参照する であり、その他のグローバル関数と変数も存在する可能性があります。 strictモード、それは未定義です)。ただし、これを含むグローバル関数が文書 オブジェクト内の要素のイベントハンドラの一部として呼び出された である場合、これは呼び出し元のHTML要素を参照します。newキーワード(たとえばvar c = new Thing())を使用して メソッドが呼び出された場合、 はThingオブジェクト自体を参照します。関数 がオブジェクトのプロパティとして添付され、その オブジェクト(obj.f(x)など)のメソッドとして呼び出された場合、これは 関数が含まれるオブジェクトを参照します。 functionオブジェクトの.call()メソッドまたは.apply() メソッドを使用して、これを手動で で指定することもできます。たとえば、メソッド呼び出し obj.f(x)は、obj.f.call(obj、x)として記述することもできます。 DOMイベント ハンドラのようなネストされた関数でこれと異なる意味を扱うには、この の参照を変数(一般的には という名前)に保存するのがJavaScriptの共通のイディオムです。変数を使用して、 ネストされた関数内の呼び出しオブジェクトを参照します。

関連する問題