如何在整个页面范围内保留变量 - Javascript

时间:2013-06-07 06:31:04

标签: javascript mobile cordova phonegap-plugins

我是JS的一个新人,我在手机屏幕上做移动项目,我想知道如何在整个页面范围内保留一个变量,不是全局变量,因为它会占用大量内存对于移动开发者来说是不可接受的,我在页面中有两个或更多JS标签,如图所示,

<script type="text/javascript">
// script one here
</script>

<html> //html block here </html>

<script type="text/javascript">
// script two here
</script>

所以我要求你提出宝贵的建议&amp;救命。谢谢!

1 个答案:

答案 0 :(得分:2)

“整体页面范围”全球范围。

JavaScript范围(通常,除了特定的深奥范围*)有两种方式:

  • 全球范围
  • 关闭范围(由函数创建的范围)

由于您无法通过脚本标记共享功能,因此全局是您唯一的选择。

考虑将消息传递给共享数据而不是全局。

以下是通过消息传递完成这样的事情:

脚本0:

window.pubsub = (function(){
       var subscribers = [];
       return {
            subscribe:function(user){
                subscribers.push(user);
            },
            publish:function(message,data){
                subscribers.forEach(function(elem){
                     elem.onMessage(data);
                });
            }
       };
})();

脚本1:

(function(pubsub){
     var someObject = {}; // to share state
     //code here
     pubsub.subscribe(someObject);

     someObject.onMessage = function(){
        //whatever you do when you get a message
     };
})(window.pubsub);

脚本2将是相同的,只是它会以不同的方式处理消息。

这样,你有一个全局变量(如果太多了,你甚至可以在订阅脚本2之后删除窗口对它的引用,这意味着根本没有全局变量)

*技术上尝试/捕获并引入范围,但它们非常罕见,不应该像这样使用