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
引用。发生了什么事?
答案 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
。