鉴于:
(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。
如果您既无权访问构造函数,也无权访问实例,则无法更改属性,只能修改源代码。