如何解决JavaScript中的private和public字词到底有多保留?
| 每次构建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中保留字的经验,该代码将因诸如语法错误之类的错误而出错。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。