【问题标题】:Faster way to access namespace variables?访问命名空间变量的更快方法?
【发布时间】:2012-03-14 02:43:05
【问题描述】:

我有一个 javascript 命名空间设置,例如:

(function (skillet, $, undefined) {

  skillet.messages: {

    pages: {

        logon: {

             errors: {
                 username: 'user is wrong'
             }
        } 
    }

  };

} (window.skillet = window.skillet || {}, jQuery));

有没有比不断输入更有效的访问方式:

skillet.messages.pages.logon.errors.username

当从其他函数访问 this 时?

【问题讨论】:

    标签: javascript jquery namespaces


    【解决方案1】:

    如果你经常使用某个命名空间,你可以为它创建一个别名:

    var shortcut = skillet.messages.pages.logon
    shortcut.errors.username
    

    【讨论】:

    • 甜蜜!你认为设置另一个shortcuts 类型skillet.shortcuts { logonErrors: skillet.messages.pages.logon.errors } 是理想的吗?可以从任何地方轻松访问,然后像skillet.shortcuts.logonErrors.username 一样?
    • 这更进一步。您可以在skillet 对象下创建alias,只要您不要创建太多别名并导致找到正确的别名另一个问题。 :)
    【解决方案2】:

    通过skillet.messages.pages.logon.errors.username 访问会很快,因为原型链不必遍历。但是,如果您多次使用命名空间,则可以为其创建别名(分配给局部变量):

    var errors = skillet.messages.pages.logon.errors;
    ...
    

    【讨论】:

      【解决方案3】:

      我会这样做:

      function getErrors() {
        return skillet.messages.pages.logon.errors;
      }
      
      alert( getErrors().username );
      

      实际上是一样的,但你的代码更干净一些。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-24
        • 2021-04-19
        • 1970-01-01
        • 2012-08-13
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多