本文介绍了在 JavaScript 中通过立即执行函数(IIFE)定义全局对象的两种常见方法。第一种方法将对象作为参数传递给工厂函数,利用 Object.defineProperty 定义属性;第二种方法采用变量合并策略初始化对象。这两种方式均能实现功能模块的独立保存与使用,类似于 jQuery 插件的开发模式,有助于避免全局变量污染。
JavaScript 全局对象定义方法
本文通过具体实例解析了 JavaScript 中定义全局对象的实现方式,供开发者参考。
!function (factory) {
factory(window['Hi'] = {
__a: function () {
console.log('Hi.__a');
},
__b: function () {
console.log('Hi.__b');
},
__c: function () {
console.log('Hi.__c');
}
});
}(function (Hi) {
if (typeof Hi === undefined) {
Hi = {};
}
Object.defineProperty(Hi, 'appName', {
get: function () {
return 'this is app name.';
}
})
});
console.log(Hi.appName);//this is app name.
Hi.__b();//Hi.__b
利用立即执行函数(IIFE)将对象(如 Hi)作为参数,传递给名为 factory 的函数。
!function (factory) { }();
在立即执行函数内部,将需要定义的对象以参数形式传入工厂函数。
以下代码展示了另一种实现相同对象定义的方式:
var myObj = myObj || {};
(function (myObj) {
myObj.__a = function () {
console.log('myObj.__a');
};
myObj.name = 'this is myObj.name';
})(myObj);
console.log(myObj.name);//this is myObj.name
myObj.__a();//myObj.__a
上述定义方法相对独立,可作为功能模块进行保存和调用。
这种写法类似于 jQuery 插件的开发风格。
更多关于 JavaScript 相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家 JavaScript 程序设计有所帮助。