JavaScript 中的 private 和 public 这两个词到底有多保留

发布于 2024-11-17 06:51:25 字数 638 浏览 10 评论 0原文

每次我构建一个 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;
})();

但我从来没有这样做过,因为那些是保留字。他们到底有多矜持呢?浏览器会失败吗?在我的测试中,一切似乎都有效,但我是否遗漏了一些东西?

Each time I build a JS library I have this sort of concept:

(function(window,undefined){
  var LibName = function(){
    var privateAPI = {
      method: function(){}
    };
    var publicAPI = {
      publicMethod: function(){}
    };
    return publicAPI;
  }
  window.LibName = LibName;
})();

But i've always longed for just doing:

(function(window,undefined){
  var LibName = function(){
    var private = {
      method: function(){}
    };
    var public = {
      publicMethod: function(){}
    };
    return public;
  }
  window.LibName = LibName;
})();

But I've never done that because those are reserved words. Just how reserved are they? Will a browser fail? In my testing, everything seems to work, but am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

束缚m 2024-11-24 06:51:25

始终假设保留字使用不当会导致应用程序失败。

publicprivate 这样的词是未来保留字,所以即使它们现在起作用,将来也可能不起作用。

Always assume that using reserved words improperly will cause the application to fail.

Words like public and private are future reserved words, so even if they work now the might not in the future.

无可置疑 2024-11-24 06:51:25

我不建议使用私人和公共。但是只有通过“use strict”使用严格模式才会出现错误: 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();

I would not recommend to use private and public. But you'll get an error only by using strict mode with "use strict": https://developer.mozilla.org/en/JavaScript/Strict_mode

If you want to be sure, it will work in the future, you would have to use parentheses:

this["private"] = {
  method: function() {}
}

I prefer to shorten the var to "pub" and "priv". So I use a pattern like this:

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();
只等公子 2024-11-24 06:51:25

根据我在 javascript 中保留字的经验,代码会出现语法错误之类的错误。

From what I've experienced with reserved words in javascript the code will error out with something like a syntax error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文