JavaScript将阵列推送到类原型问题

时间:2016-03-15 02:31:54

标签: javascript arrays class oop

我在下面有这个脚本,点击按钮时触发:

<button>Click</button>

<script>
  var test = function(){};
  test.prototype = {
    item:[]
  };

  $(document).ready(function(){
    $("button").on('click',function(){
      var t = new test();
      t.item.push(1);
      console.log(t.item);//[1],[1,1],[1,1,1]
    });
  })
  </script>

为什么t.item的值总是循环,而不是生成一个没有值的新值?

1 个答案:

答案 0 :(得分:1)

因为t.item是对test.prototype.item的引用。

所以新对象将继承item数组。

你可以通过

来避免
var test = function(){this.item=[];};

这将在对象本身上创建一个新数组,而不是在原型上为所有实例使用相同的数组。