var tools = {};
tools.triangle = function() {
var originX = 0;
var originY = 0;
}
var tools = {};
tools.triangle = function() {
this.originX = 0;
this.originY = 0;
}
これら 2 つのコード ブロックに違いはありますか? これが以前に尋ねられた場合は申し訳ありません。
var tools = {};
tools.triangle = function() {
var originX = 0;
var originY = 0;
}
var tools = {};
tools.triangle = function() {
this.originX = 0;
this.originY = 0;
}
これら 2 つのコード ブロックに違いはありますか? これが以前に尋ねられた場合は申し訳ありません。
var
内にローカル変数を作成しますtools.triangle
。変数originX
とoriginY
は、 の外部では操作できませんtools.triangle
。this
現在扱っているオブジェクトへのポインタです。2 番目の例を使用して、オブジェクトにプロパティを与えることができますnew tools.triangle();
。new
を使用せずに使用する場合はtools.triangle();
、this
オブジェクトであるグローバル オブジェクトを指しwindow
ます。this
関数メソッドを使用して、次のようにポイントするcall();
オブジェクトを変更できますapply();
。
var myObj = {};
tools.triangle.call( myObj );
// "this" in tools.triangle now points to myObj
// myObj now has the properties originX and originY
this
は任意のオブジェクトを参照でき、未定義またはnull
ES5 strict モードであることも知っておくことが重要です。
詳細については、こちらをご覧ください。
最初の例では、 X と Y の両方が variable に保存されたクロージャへのローカル変数として存在しますtriangle
。
tools.triangle
2 番目の例では、 を使用しているため、X と Y がオブジェクトの変数として存在しますthis
。