3

phonegap中的“this”是什么?我正在开发一个应用程序,其中包含应用程序的本地 javascript 和从服务器提取的远程 javascript。我正在使用咖啡脚本来生成所有的 javascript。

这两个文件都包含在应用程序的索引头中,通过 haml 生成,如下所示:

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

文件 1.js.coffee:

@myObj1 = property: true

文件 2.js.coffee:

@myObj2 = property: true

myObj1全局可用,可以直接引用myObj1,但myObj2只能通过 via 获得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当您尝试修复错误时,您不必担心六个月后应该或应该是什么。说出你的意思:如果你想要它是全局的,把它放在window.

于 2012-05-02T22:17:18.293 回答