与えられた:
(function() {
function Foo() {
}
$.extend(Foo.prototype, {
bar: 'hasBeer'
});
})
そのクロージャの外から bar メソッドを変更することは可能ですか?
与えられた:
(function() {
function Foo() {
}
$.extend(Foo.prototype, {
bar: 'hasBeer'
});
})
そのクロージャの外から bar メソッドを変更することは可能ですか?
コンストラクター関数 ( ) にアクセスでき、すべてのインスタンスFoo
をオーバーライドする場合は、新しい値を に割り当てます。bar
Foo.prototype.bar
のインスタンスがある場合は、そのインスタンスに対してFoo
のみオーバーライドできます。bar
instance.bar = ...;
または、すべてのインスタンスに対して、ここでもプロトタイプ メソッドをオーバーライドします。このためには、最初にプロトタイプを取得する必要があります。これはObject.getPrototypeOf
[MDN]で行うことができます:
Object.getPrototypeOf(instance).bar = ...;
ただし、これは ES5 メソッドであり、IE <= 8 または Opera では使用できないことに注意してください。
コンストラクタにもインスタンスにもアクセスできない場合、ソース コードを変更する以外にプロパティを変更することはできません。