javascript - polymer 中的私有(private)非静态变量?

标签 javascript polymer web-component

如何在 polymer 中拥有私有(private)非静态变量?

在:

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

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

   </script>

</polymer-element>

internalState 和 anotherInernalState 都暴露给外部(例如,可以通过类似的方式访问:

document.querySelector('component-one').internalState

(当从外部更改 internalState 会使组件不稳定时,这可能是不可取的。)

其中:

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

    (function() { 

       var internalState = 1;


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

   </script>

</polymer-element>

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

有没有办法在 polymer 对象中拥有私有(private)非静态变量?

最佳答案

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

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

否则,您必须对 map 和闭包使用技巧。

关于javascript - polymer 中的私有(private)非静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24461109/

相关文章:

javascript - 如何使用 AJAX/jQuery 将数据发送到 Node js 的 post 方法?

javascript - AngularJS 自定义指令访问范围数据

css - CSS 选择器中的/deep/and::shadow 是什么意思?

javascript - polymer Shadow dom 元素的基于类的 CSS 样式

javascript - 扩展 html 组件获取属性不起作用

javascript - 在 cypress.io 中对动态文件运行测试

javascript - 如何使用 jquery 将 html 模板创建为字符串?

html - Web 组件/HtmlElement : unit testing

polymer - 有没有办法在不触发 Polymer 中的观察者回调的情况下修改观察值

css - 覆盖 React 组件