我目前正在通過擴展函數原型和我像這樣函數/變量的對象中設置JavaScript類....出現外原型JS類變量的變化
//class shorthand
var clss = function(args){
var c = function() {};
_.extend(c.prototype, args); //using underscore.js
return c;
};
//class definition
var ThisIsMyClass = clss({
varExample: 5,
test: function() {
console.log(this.varExample);
},
alter: function(){
this.varExample = 8;
}
});
//class initialisers
var hello = new ThisIsMyClass();
var hi = new ThisIsMyClass();
var ayup = new ThisIsMyClass();
我的問題是,這裏的一切都駐留ThisIsMyClass.prototype
和函數可以被調用並且變量被讀取,但是當值被改變時,它們會出現在該對象的原型之外(並且還保留在具有其原始值的原型中)?
運行此代碼
//class initialisers
hello.varExample = 6;
hi.alter();
//look at object structure
console.log(hello);
console.log(ayup);
console.log(hi);
//trace the values
hello.test();
ayup.test();
hi.test();
控制檯看起來像這樣
是原型只是結構的參考,然後在作出任何改變,但它們複製到對象本身後?