1
我有低於這個腳本,該腳本觸發按鈕點擊:的JavaScript推到數組類原型問題
<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的值總是循環,而不是產生一個新的有沒有價值, ?
我認爲你想要項目作爲一個屬性,並'推'在你的方法(原型)。所以'var test = function(){this.item = [];}'和'test.prototype.doSomething = function(i){this.item.push(i); return this.item;}' – oortCloud
在這種情況下,你需要在構造函數中初始化屬性('function Test(){this.item = [];}')。請參閱http://stackoverflow.com/a/16751343/560114以及http://www.bennadel.com/blog/1566-using-super-constructors-is-critical-in-prototypal-inheritance-in-javascript。 HTM。 –
就我個人而言,爲了避免這個問題,我在構造函數而不是原型中聲明瞭所有*數據屬性。儘管從技術上講,只需要爲非原始類型(即對象和數組)執行此操作。 –