gpt4 book ai didi

javascript - 如何覆盖闭包内的函数?

转载 作者:行者123 更新时间:2023-11-29 20:08:23 25 4
gpt4 key购买 nike

给定:

(function() {
function Foo() {
}
$.extend(Foo.prototype, {
bar: 'hasBeer'
});
})

是否可以从该闭包的外部更改 bar 方法?

最佳答案

如果您有权访问构造函数 (Foo) 并且您想要覆盖所有实例的 bar,您可以为 Foo.prototype 分配一个新值.bar.

如果您有 Foo实例,您可以只覆盖该实例的 bar:

instance.bar = ...;

或者对于所有实例,再次重写原型(prototype)方法。为此,您必须先获得原型(prototype),您可以使用 Object.getPrototypeOf [MDN] 来完成。 :

Object.getPrototypeOf(instance).bar = ...;

但请注意,这是一个 ES5 方法,在 IE <= 8 或 Opera 中不可用。


如果您既无权访问构造函数,也无权访问实例,则只能通过修改源代码来更改属性。

关于javascript - 如何覆盖闭包内的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com