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

Sai*_*han 4 javascript oop

我正在创建一个严重依赖JavaScript的小项目.我来自PHP/MySQL和现在步入的Node.js/JavaScript的/ MongoDB的,我的hve说这是一个相当mindswitch.

我想创建一个简单的对象,它具有一些我可以在页面中使用的特殊功能.我一直在看一些教程,并查看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,'-');
    }

});
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

// Maybe
$s.store( $s.page.title, $s.page.html );
Run Code Online (Sandbox Code Playgroud)

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

$.tmpl( $s.page.html, $s.page.data ).appendTo( "#content" );
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 7

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

var myGlobalObject = {};
myGlobalObject.testFunction = function() {
    // put your code here
};
Run Code Online (Sandbox Code Playgroud)

然后您可以这样调用:

myGlobalObject.testFunction();
Run Code Online (Sandbox Code Playgroud)

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

var myGlobalObject = myGlobalObject || {};

myGlobalObject.testFunction = function() {
    // put your code here
};
Run Code Online (Sandbox Code Playgroud)

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