繁体   English   中英

如何创建一个包含特殊功能的格式良好的全局javascript对象

[英]How to create a well formed global javascript object containing special functions

我正在创建一个严重依赖JavaScript的小项目。 我来自php / mysql,现在踩到node.js / javascript / mongodb,我想说这是一个很好的思想开关。

我想创建一个简单的对象,它具有一些我可以在页面中使用的特殊功能。 我一直在看一些教程,并查看jquery和backbone等库,但我需要对我的决定提出一些最终建议。

我只需要一些小功能,没有跨浏览器支持,这就是为什么我不选择像骨干这样的东西。 当我在JavaScript编程上有更好的崩溃时,可能会对此有所改变。

令我困惑的是,是否使用new ,或者可能将代码包装到自调用函数中。

我看到jquery在window内创建了一个对象而不是公开它,但我不知道它是如何工作的。

足够的介绍,现在到了这一步。 我创建了这样的东西:

var $s = Object.create({

    page: Object.create({

        title: 'pagetitle',
        html: '',
        data: {},

        render: function(){
            // Basic render function
        }

    }),

    socket: Object.create({
        // My websocket connection
    }),

    store: function(key, value) {
        localStorage.setItem(key, JSON.stringify(value));
    },

    retrieve: function(key) {
        var value = localStorage.getItem(key);
        return value && JSON.parse(value);
    },

    slugify: function(slug){
        return slug.replace(/[^a-zA-Z 0-9-]+/g,'').toLowerCase().replace(/ /g,'-');
    }

});

这只是我输入的几个随机函数。

我还没有测试过这个,它是一个草稿,我想知道这是否有用。

现在我想我可以做这样的事情:

$s.page.html = 'somehtml';
$s.page.render();

// Maybe
$s.store( $s.page.title, $s.page.html );

我使用jQuery和jQuery模板,所以这样的事情是可能的:

$.tmpl( $s.page.html, $s.page.data ).appendTo( "#content" );

这里没有什么花哨的东西。 您可以使用如下方法创建全局javascript对象:

var myGlobalObject = {};
myGlobalObject.testFunction = function() {
    // put your code here
};

然后您可以这样调用:

myGlobalObject.testFunction();

您将经常看到的一种稍微灵活的设计模式是:

var myGlobalObject = myGlobalObject || {};

myGlobalObject.testFunction = function() {
    // put your code here
};

当可能有许多不同的代码片段对myGlobalObject ,它们会被使用,并且它们都希望确保在向其添加属性之前正确声明它。 这种方式,如果它尚不存在则创建它,如果它已经存在,则在其上留下可能已存在的方法和属性。 这允许多个模块分别为myGlobalObject提供初始化,而不考虑它们加载的顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM