我剛接觸JavaScript中的「classes」,所以我希望我在我的問題中使用了正確的術語。JavaScript:在構造函數中使用原型函數更改變量
我對此進行了修改。構造函數中的變量可用於通過原型定義的所有函數。 這似乎是正確的在一個方向,但我不能從一個函數內更新變量。
這裏是一個小的jsfiddle https://jsfiddle.net/2g4vnL9b/
var littleTest = function() {
this.testVar = "blub";
}
littleTest.prototype = {
changeTestVar: function(val) {
this.testVar = val;
},
changeTestVar2: function(val) {
return val;
}
}
var myTest = new littleTest();
console.log(myTest.testVar); // -> blub
myTest.changeTestVar = "foo";
console.log(myTest.testVar); // -> blub
myTest.testVar = myTest.changeTestVar2("foo");
console.log(myTest.testVar); // -> foo
我試圖更新從功能test.changeTestVar的this.testVar,但它不會被保存供以後使用對象內。只有當我直接設置它纔會被保存。 有人可以解釋爲什麼我的代碼行爲像它的行爲,我必須改變?
非常感謝你
我認爲這行是錯誤的'myTest.changeTestVar =「foo」;'可能你的意思是'myTest.changeTestVar(「foo」);'? – MysterX
在'changeTestVar2'中,你沒有設置'this.testVar2',你只是返回在 –
中傳遞的信息。注意,在完成這個工作之後,在方法中設置'this.testVar'會創建一個名爲方法。原型中的'testVar'保持它的值,當你創建'littleTest'的新實例時,在這些實例中的'testVar'將會是''blub''。 – Teemu