関数のプロトタイプにデフォルトのオブジェクト値を配置しようとしています。しかし、それはプロトタイプの "デフォルト"オブジェクトを別のインスタンスによって変更させる原因になります。なぜそれが起こっているのですか?私はfunction内にdefaultsオブジェクトを置くことができますが、それは私がしたいことではありません。誰かがなぜプロトタイプ変数が第2のインスタンスによってオーバーライドされたのか説明できますか?デモはここにある:https://jsfiddle.net/c0zg5vjp/2/関数プロトタイプオブジェクトが別のインスタンスで変更される
window.foo = function(options) {
this.settings = jQuery.extend({}, this.defaults, options || {});
this.bar = function() {
this.settings.classes.push('new_class');
}
}
window.foo.prototype.defaults = { 'classes' : ['default'] };
var instance = new foo();
instance.bar();
var instance_2 = new foo();
instance_2.bar();
alert(instance_2.settings.classes.join());