17
var tools = {};

tools.triangle = function() {
    var originX = 0;
    var originY = 0;
}

 

var tools = {};

tools.triangle = function() {
    this.originX = 0;
    this.originY = 0;
}

これら 2 つのコード ブロックに違いはありますか? これが以前に尋ねられた場合は申し訳ありません。

4

2 に答える 2

13

var内にローカル変数を作成しますtools.triangle。変数originXoriginYは、 の外部では操作できませんtools.trianglethis現在扱っているオブジェクトへのポインタです。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は任意のオブジェクトを参照でき、未定義またはnullES5 strict モードであることも知っておくことが重要です。

詳細については、こちらをご覧ください。

于 2012-07-01T22:05:00.170 に答える
1

最初の例では、 X と Y の両方が variable に保存されたクロージャへのローカル変数として存在しますtriangle

tools.triangle2 番目の例では、 を使用しているため、X と Y がオブジェクトの変数として存在しますthis

于 2012-07-01T22:13:30.380 に答える