在声明聚合物元素的属性时,为什么值有时会返回{}?

Bob*_*sta 2 javascript polymer

我很好奇的部分是为什么使用

value: function() { return {}; }
Run Code Online (Sandbox Code Playgroud)

代替

value: {}
Run Code Online (Sandbox Code Playgroud)

这是示例代码:

<script>
    Polymer({

      is: 'polymer-demo',

      properties: {
        data: {
            type: Object,
            notify: true,
            value: function() { return {}; }
          }
      },

    });
  </script>
Run Code Online (Sandbox Code Playgroud)

tri*_*cot 5

这在示例中解释:

将属性初始化为对象或数组值时,请使用函数来确保每个元素都获得自己的值副本,而不是在元素的所有实例之间共享对象或数组.

虽然你可以使用{},但这将是每个元素共享的相同对象,因此如果一个元素的值被突变,则所有其他元素将看到应用了相同的更改.这不是你想要发生的事情.通过使用函数,将为每个元素调用该函数,并且每个调用将生成一个新的单独对象.然后,突变将仅适用于该单个元素而不影响其他元素.