问题描述
|
每次构建JS库时,我都有这种概念:
(function(window,undefined){
var LibName = function(){
var privateAPI = {
method: function(){}
};
var publicAPI = {
publicmethod: function(){}
};
return publicAPI;
}
window.LibName = LibName;
})();
但是我一直渴望只做:
(function(window,undefined){
var LibName = function(){
var private = {
method: function(){}
};
var public = {
publicmethod: function(){}
};
return public;
}
window.LibName = LibName;
})();
但是我从来没有做过,因为那些都是保留字。他们到底有多保留?浏览器会失败吗?在我的测试中,一切似乎都正常,但是我缺少什么吗?
解决方法
https://developer.mozilla.org/zh-CN/JavaScript/Reference/Reserved_Words
和
官方规范为http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf。
它们在7.6.1.2中列为“保留供将来使用”。
, 始终假定使用保留字不当会导致应用程序失败。
诸如
public
和like3ѭ之类的单词是将来保留的单词,因此即使它们现在可以使用,将来也可能不会使用。
, 我不建议使用私人和公共场所。但是只有将严格模式与“使用严格”一起使用,您会得到一个错误:https://developer.mozilla.org/en/JavaScript/Strict_mode
如果您想确保它将来可以使用,则必须使用括号:
this[\"private\"] = {
method: function() {}
}
我更喜欢将var缩短为\“ pub \”和\“ priv \”。所以我使用这样的模式:
namespace.decorator = function (pub,priv) {
pub = pub || {};
priv = priv || {};
//namespace.decoratorToExtend(pub,priv);
pub.method = function() {alert(pub.prop)};
return pub;
}
var instance = namespace.decorator({prop:\'hello world\'});
instance.method();
, 根据我对javascript中保留字的经验,该代码将因诸如语法错误之类的错误而出错。