Javascript 为window.object实现私有函数
我正在为一个API创建一个包装器,它将在两个不同的应用程序中使用 我正在使用一个全局对象,并将各种函数作为不同的键放入该对象中。所以我要:Javascript 为window.object实现私有函数,javascript,global,Javascript,Global,我正在为一个API创建一个包装器,它将在两个不同的应用程序中使用 我正在使用一个全局对象,并将各种函数作为不同的键放入该对象中。所以我要: window.globalContainer = { APIEndpoint1: function(){ make API call and resolve result }, APIEndpoint2: function(){}, ... } API调用的所有内容都直接在函数中。也就是说,您可以从控制台转到window.globa
window.globalContainer = {
APIEndpoint1: function(){
make API call and resolve result
},
APIEndpoint2: function(){},
...
}
API调用的所有内容都直接在函数中。也就是说,您可以从控制台转到window.globalContainer.apidemp1,查看整个函数
对于跨多个应用程序使用并充当助手库的东西来说,这种做法通常不好吗?还是可以接受?我在控制台中查看了jQuery,它似乎也做了同样的事情。如果不赞成,如何在全局对象中实现私有函数 您可以使用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(){},
...
}
}();
匿名闭包是一个很好的起点:
(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)
有了这些,您可以非常直观地构建一个库,而不会污染名称空间
您可以明确地说出希望访问哪些变量和函数。@m-davis,我有多个对象绑定到window.foo上。我遇到了一个错误,我可以添加的唯一方法,比如说,
foo.bar.get
,就是首先用foo.bar={}
实例化foo.bar
,是否有更好的方法动态声明这些新对象?@somethingsiming据我所知,这是最好的方法。您可以这样做:foo.bar={get:function(params){return baz;},set:function(param){return baz=param;}。您也可以等到global.foo
语句之前,说foo.bar=bar
。通过这种方式,您可以将bar
构建为该语句上方的任何函数、对象或变量。(注意,您必须实例化var bar={};
或函数栏(…){…}
无论如何)明白了。谢谢你的帮助