我在下面有这个脚本,点击按钮时触发:
<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的值总是循环,而不是生成一个没有值的新值?
答案 0 :(得分:1)
因为t.item是对test.prototype.item的引用。
所以新对象将继承item数组。
你可以通过
来避免var test = function(){this.item=[];};
这将在对象本身上创建一个新数组,而不是在原型上为所有实例使用相同的数组。