要领一 对象字面量示意法
在对象字面量示意法中,一个对象被形貌为一组包含在大括号中,以逗号分开的 name/value 对。对象内的称号可所以字符串或标识符,背面随着一个冒号。对象中末了一个 name/value 对不加逗号,不然会失足。
/**
* 运用字面量示意法定义模块
*/
var myModule = {
myProperty: "someValue",
myConfig: {
useCaching: true,
language: "en"
},
myMethod: function () {
console.log("the first method");
},
myMethod2: function () {
console.log("the second method");
},
};
console.log(myModule.myProperty); // someValue
console.log(myModule.myConfig); // {useCaching: true, language: 'en'}
console.log(myModule.myConfig.useCaching); // true
myModule.myMethod(); // the first method
myModule.myMethod2(); // the second method
要领二 Module形式
Module形式运用闭包封装“私有”状况和构造。它供应了一种包装夹杂公有/私有要领和变量的体式格局
,防备其污染全局定名空间,防备其泄漏到全局作用域。经由过程该形式,只需返回一个公有API,而其他的统统则都维持在私有闭包里。
/**
* Module要领定义
*/
var myNameSpace = (function () {
// 私有变量
var myPrivateVar = 0;
// 私有函数
var myPrivateMethod = function (foo) {
console.log(foo);
};
// 公有API
return {
// 公有变量
myPublicVar: "foo",
// 公有要领
myPublicFunction: function (bar) {
// 操纵私有变量
myPrivateVar ++;
// 挪用私有函数
myPrivateMethod(bar);
},
// 公有要领二
myPublicFunction2: function () {
console.log("success");
}
};
}) ();
console.log(myNameSpace.myPrivateVar); // undefined
console.log(myNameSpace.myPrivateVar); // undefined
console.log(myNameSpace.myPublicVar); // foo
console.log(myNameSpace.myPublicFunction); // Function
myNameSpace.myPublicFunction2(); // success
myNameSpace.myPublicFunction("i am first"); // i am first