我正在构建一个库(https://github.com/OscarGodson/storageLocker),更确切地说是localStorage包装器,但是因为这是我第一次尝试使用OO JavaScript,所以我仍在学习,并且还有几个问题。
storageLocker.prototype.myInternalFunction()
还是我的脚本中只是myInternalFunction()
?我不希望这些函数是全局的...例如,其中一个函数只是检查JSON中的一堆项目,查看它们的对象,然后检查对象的类型(例如Date()
),然后进行转换它。 patterns
的变量,它类似于var patterns = {"date":/\/Date\(([0-9]+)\)\//}
,应如何将其添加到脚本中? 非常感谢。我想用正确的方式写我的剧本,所以我问你们。我不知道本地有没有做过OO JS的JS家伙,他们都是老派...
最佳答案
在命名空间上有不错的部分值得一读。
也是另一个很好的概述。
有关优秀javascript做法的更多信息,请查看
在评论中进行讨论之后,我将示例更改为:
var storageLocker = function (selector) {
var _selector = selector || "default value";
function myPrivateFunction() {
}
var public = {
get: function () {
return _selector;
},
uppercase : function () {
_selector = _selector.toUpperCase()
return this;
}
}
return public;
};
// use:
var test = storageLocker("search for this").uppercase().get();;
alert(test);
虽然这并不是库/模块的示例(因为您是通过直接调用构造函数来访问代码的),但它是将同一对象保留在范围内以便进一步链接方法的示例。实际上,它不是在返回
storageLocker
对象,而是在返回“public”对象,但是该对象可以通过闭包访问storageLocker
的范围。还有其他更好的方法可以通过返回
storageLocker
对象本身来完成此操作,但这需要更多的思考。