我正在构建一个库 (https://github.com/OscarGodson/storageLocker),更确切地说是一个 localStorage 包装器,但是因为这是我第一次尝试 OO JavaScript,所以我仍在学习并且我有一个几个问题。
我在其他库中看到,有时它们将它们包装在匿名函数中。我应该,还是应该用这个来做?如果是这样,如何不破坏任何东西?
对于内部API(基本上就是内部函数)应该怎么写?应该将它们添加到主要对象,例如
storageLocker.prototype.myInternalFunction()
还是在我的脚本中随机出现myInternalFunction()
?我不希望这些函数是全局的......例如,其中一个函数只是检查 JSON 中的一堆项目,看看它们的对象,然后检查对象类型是什么(比如Date( )
) 然后进行转换。我应该如何/在何处将全局变量添加到我的脚本变量?例如我有一个名为
patterns
的变量,类似于var patterns = {"date":/\/Date\(([0-9]+)\)\//}
var patterns = {"date":/\/Date\(([0-9]+)\)\//} code> 我应该如何将它添加到我的脚本中?
非常感谢。我想以正确的方式编写我的脚本,所以我想问问你们。我不知道本地有任何 JS 人员会做任何 OO JS,他们都是老派类型...
最佳答案
我会说:
1) 这种技术的目的是不污染全局命名空间。这是一件好事。 在下面的示例中,您可以看到您与图书馆的所有交互都是通过一个对象 MyLibrary。公共(public)API是匿名函数的返回值。
var MyLibrary = function() {
// private
this.InternalVariable = 'some value';
function internalFunction(x,y) {
return x + y;
}
function getInternalVariable() {
return this.InternalVariable;
}
// public
return {
publicVariable : '1.0',
publicFunction : function(x,y) {
return x + y
},
accessInternalVariable : function() {
return getInternalVariable();
}
}
}();
2) 另见上面关于如何放置“内部”函数的示例
3) 如果你的全局变量是某种配置选项,我只是公开 setter/getter 并保持变量“私有(private)”
关于javascript - 构建我的 JS 库,几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299725/