聚合物中的私有非静态变量?

sep*_*ans 11 javascript web-component polymer

如何在聚合物中使用私有非静态变量?

在:

<polymer-element name="component-one">
   <script>

       Polymer('component-one', {
       internalState = 1,    
       ready() {
               this.anotherInternalState = 1;
           }
           /* more variables and functions */
      });

   </script>

</polymer-element>
Run Code Online (Sandbox Code Playgroud)

internalState和anotherInernalState都暴露给外部(例如通过以下方式访问:

document.querySelector('component-one').internalState
Run Code Online (Sandbox Code Playgroud)

(从外部更改internalState时可能不合需要使组件不稳定.)

如:

<polymer-element name="component-two">
   <script>

    (function() { 

       var internalState = 1;


       Polymer('component-two', {
          /* some variables and functions */
      });
    })();

   </script>

</polymer-element>
Run Code Online (Sandbox Code Playgroud)

internalState在外部是隐藏的,但它是静态的,并在组件的所有实例之间共享.

有没有办法在聚合物对象中有一个私有的非静态变量?

Sco*_*les 4

这更像是一个纯粹的 JavaScript 问题,而不是 Polymer 问题。从 ES5 开始,JavaScript 中没有“私有实例成员”,尽管 ES6 带来了一些新工具。

我的建议是使用旧的约定,即在私有实例变量前添加下划线 ( _internalState)。

否则,你必须在地图和闭包方面变得棘手。