javascript - phonegap 中的“This”

标签 javascript cordova coffeescript haml this

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 必须是 documentfile2.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/

相关文章:

javascript - 如何在 Threejs 中使用外部和内部网格对象渲染带有剪裁平面和模板的帽子

cordova - 应用程序崩溃后如何以编程方式重新加载 Cordova 插件?

javascript - 使用 CoffeeScript 删除数组的重复元素

ruby - 如何在 coffeescript 模板中访问 sinatra 类变量

javascript - Grunt : Watch multiple files, 编译仅更改 - livereload 中断?

javascript - 使用子进程的参数调用 props 函数

javascript - jQuery-JS 使用循环从多维数组追加

javascript - 多年来以增量方式向日期添加天数

javascript - phonegap 上的 db.transaction 问题

javascript - Meteor:如何在 Safari 中打开外部链接