JavaScript中的private和public这个词有多含蓄
每次构建JS库时,我都有这样的概念:JavaScript中的private和public这个词有多含蓄,javascript,oop,private,public,Javascript,Oop,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 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;
})();
但我从来没有这样做过,因为这些都是保留的字眼。他们有多保守?浏览器会失败吗?在我的测试中,一切似乎都正常,但我是否遗漏了什么?总是假设不正确地使用保留字会导致应用程序失败
像
public
和private
这样的词都是,所以即使它们现在起作用,将来也可能不起作用。根据我在javascript中使用保留词的经验,代码会出现类似语法错误的错误。
及
对于官方规范
它们在7.6.1.2中被列为“保留供将来使用”。我不建议使用私人和公共。但是,只有在“use strict”中使用strict模式时,才会出现错误: 如果您想确定,它将来会起作用,则必须使用括号:
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();
您忽略了一个概念,即重载语言保留字是一个坏主意不是因为它会混淆浏览器,而是因为它会混淆试图阅读或调试代码的人。而且在将来,它可能会导致问题,例如当JS(EcmaScript)决定支持私有变量时。-1。这不一定是真的。如果不是在严格模式下,您可以使用诸如public和private之类的关键字,尽管这是不鼓励的。实际上,在ES6中,它们可以作为属性名使用。