phonegap 中的“this”是什么?我正在开发一个应用程序,其中包含本地 javascript 和从服务器提取的应用程序和远程 javascript。我正在使用 coffeescript 生成所有 javascript。
这两个文件都包含在应用程序的索引 header 中,通过 haml 生成:
%script{:src=>"javascripts/file1.js"}
%script{:src=>"http://192.168.5.205:3000/assets/file2.js"}
file1.js.coffee:
@myObj1 = property: true
文件2.js.咖啡:
@myObj2 = property: true
myObj1
在全局范围内可用,可以仅作为 myObj1
引用,但是myObj2
只能通过 document.myObj2
获得不能简单地引用为 myObj2
.发生了什么事?
最佳答案
好吧,如果你这样说:
@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
这样你就不必担心调用上下文,更重要的是,你的意图将是明确的,你将不必为 this
是什么或应该是什么感到困惑六尝试修复错误的几个月。说出你的意思:如果你想让它全局化,把它放在 window
中。
关于javascript - phonegap 中的“This”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10422298/