我正在为一个将在几个不同应用程序中使用的API创建一个包装器。
我使用全局对象并将各种函数作为不同的键放入该对象中。所以我会:
window.globalContainer = {
APIEndpoint1: function(){
make API call and resolve result
},
APIEndpoint2: function(){},
...
}
API调用的所有内容都直接在函数中。也就是说,您可以从控制台转到window.globalContainer.APIEndpoint1并查看整个函数。
对于在多个应用程序中使用并充当帮助程序库的内容,这通常是不好的做法吗?或者这可以接受吗?我在控制台中查看了jQuery,它似乎做了很多相同的事情。如果不满意,我如何在全局对象中实现私有函数?
答案 0 :(得分:1)
一个好的开始是匿名闭包:
(function (global) {
var foo = global.foo || {};
//accessible
foo.publicVar = 5;
foo.publicFcn = function (a, b) {
privateFcn(a, b);
...
};
//not accessible
var privateVar = 5;
function privateFcn(a, b) {
...
}
global.foo = foo;
})(window)
通过这些,你可以非常直观地构建一个库,不污染命名空间。
您明确说明了您希望哪些变量和函数可供访问。
答案 1 :(得分:0)
您可以使用IIFE实现私有功能/属性。
window.globalContainer = function () {
//what ever you define here is not accessible outside. Only the API in
//the returned object is accessible outside
function private1() {
make API call and resolve result
}
return {
APIEndpoint1: function(){
private1();
},
APIEndpoint2: function(){},
...
}
}();