3

phonegapの「this」とは何ですか?私は、ローカルjavascriptがアプリにパックされ、リモートjavascriptがサーバーからプルされているアプリに取り組んでいます。私はすべてのjavascriptを生成するためにcoffeescriptを使用しています。

両方のファイルは、hamlを介して生成されたアプリのインデックスヘッダーに含まれています。

%script{:src=>"javascripts/file1.js"}
%script{:src=>"http://192.168.5.205:3000/assets/file2.js"}

file1.js.coffee:

@myObj1 = property: true

file2.js.coffee:

@myObj2 = property: true

myObj1はグローバルに利用可能であり、としてのみ参照できますmyObj1が、myObj2を介してのみ利用可能でありdocument.myObj2、単にとして参照することはできませんmyObj2。何が起こっている?

4

1 に答える 1

6

さて、あなたがこれを言うならば:

@myObj2 = property: true

そして、他の場所とmyObj2同じように参照する必要があり、実行されるときでなければなりません。この種のことは、コードがまたは同様の手段(例:http://jsfiddle.net/ambiguous/6DFK9/)で実行された場合に発生する可能性があります。document.myObj2thisdocumentfile2.js.coffee$(document).ready()

何かをグローバルにしたい場合は、それについて明示して使用する必要がありますwindow

# in file1.js.coffee:
window.myObj1 = property: true

# in file2.js.coffee:
window.myObj2 = property: true

そうすれば、呼び出しコンテキストについて心配する必要がなくなり、さらに重要なことに、意図が明確になりthis、バグを修正しようとしているときに6か月以内に何が起こるかまたは何が想定されるかについてパズルを解く必要がなくなります。意味を言ってください。グローバルにしたい場合は、に入れてwindowください。

于 2012-05-02T22:17:18.293 に答える