(几乎)总是有一个瓶盖内聚合物定义是什么?((almost) always have Polymer

2019-10-20 08:27发布

对于复杂的元素,则是一个很好的做法,(几乎)总是有一个瓶盖内聚合物的定义,以保持所有这些只应修改内部私有变量和方法,而不是将它们连接到元素(例如,“这个”)?

就像下面:

<polymer-element name="animating-element">
   <script>


    (function() { 

       var privateObj = {};

       privateObj.internalState = 0; 

       //private static method
       privateObject.setupState = function(polymerObject) {
          if(polymerObject.stateExposedToOutside == /* some conditions */) { 
             privateObject.internalState = 1;
          }

       }

       Polymer('animating-element', {
          stateExposedToOutside: 0,
          ready: function() {

              privateObj.setupState(this);
              this.animate();

          },
          animate: function() {

          }
      });
    })();

   </script>

</polymer-element>

Answer 1:

这完全取决于你的元素设计。 在封闭变量将被作为private因为它得到的JavaScript。 在原型属性一般都是容易被破解。

一个阵营值隔离,并宁愿私有化尽可能的防止误差,提高提升能力。

另一个阵营价值观开放的API,以及宁愿允许开发者访问,以解决问题,笔者没有预想。

您有权决定你是哪个阵营(或者创造一个新= P)。



Answer 2:

没有! 有一个与上面的代码中的一个主要问题。 由于privateObj通过闭合密封,它是静态的(即组件的所有实例之间共享例如),并且不能保持状态为他们每个人。

此外,该思想是,仅通过它的属性因此保持内部状态的对象来确定每个部件的状态应予以避免。



文章来源: (almost) always have Polymer definition inside a closure?