'这'在phonegap

时间:2012-05-02 21:56:43

标签: javascript cordova coffeescript haml this

phonegap中的'this'是什么?我正在开发一个应用程序,其中我有本地javascript与应用程序和从服务器拉出的远程javascript。我正在使用coffeescript生成所有的javascript。

两个文件都包含在应用程序的索引标题中,通过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引用。发生了什么事?

1 个答案:

答案 0 :(得分:6)

好吧,如果你这样说:

@myObj2 = property: true

并且您必须在其他任何地方引用myObj2作为document.myObj2,然后this执行document时必须file2.js.coffee。如果您的代码是通过$(document).ready()或类似方式执行的,则会发生这种情况(例如:http://jsfiddle.net/ambiguous/6DFK9/)。

如果你想要某些东西是全球性的,那么你真的应该明确它并使用window

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

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

这样你就不必担心调用上下文了,更重要的是,你的意图是明确的,你不必为6个月内this或者应该是什么而烦恼我正试图修复错误。说出你的意思:如果你想要它是全球性的,请把它放在window