我正在创建一个严重依赖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)
这里没有什么花哨的东西.您可以使用如下方法创建全局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
而不考虑它们加载的顺序.