gpt4 book ai didi

javascript - 覆盖嵌套的 javascript 函数

转载 作者:行者123 更新时间:2023-11-28 04:39:48 25 4
gpt4 key购买 nike

我正在制作一个简单的 Chrome 扩展,并且想要覆盖页面上的 JavaScript 函数。 javascript 太复杂了,我也无法理解。这是代码的一部分:

}), define("components/Payout", ["react", "game-logic/clib", "game-logic/stateLib"], function(e, t, n) {
var r = e.DOM;
return e.createClass({
displayName: "Payout",
mixins: [e.addons.PureRenderMixin],
propTypes: {
engine: e.PropTypes.object.isRequired
},
getInitialState: function() {
return {
payout: 0
}
},
componentDidMount: function() {
window.requestAnimationFrame(this.draw)
},
draw: function() {
if (this.isMounted()) {
var e = t.calcGamePayout(t.getElapsedTimeWithLag(this.props.engine));
e ? this.setState({
payout: e * n.currentPlay(this.props.engine).bet
}) : this.setState({
payout: null
}), window.requestAnimationFrame(this.draw)
}
},
render: function() {
var e = n.currentPlay(this.props.engine).bet < 1e4 ? 2 : 0;
return r.span({
id: "payout"
}, t.formatSatoshis(this.state.payout, e))
}
})
}),

我想要“劫持”的功能是“渲染”功能。我如何从外部 JS 文件中实现这一点?

我想要的是用调整后的内容替换该函数的内容。

最佳答案

如果变量obj包含该代码返回的对象,您可以分配给obj.render:

obj.render = function() {
// your code here
};

请注意,您的代码将无法像原始 render 那样使用 rtn 变量 函数确实如此。这些变量仅在原始范围内可用,而您的函数超出了该范围。

如果你想能够调用原始的渲染方法,你可以这样做:

var orig_render = obj.render;
obj.render = function() {
var oldrender = orig_render.bind(this);
// your code here, call oldrender() to call original version
};

这称为monkey patching .

关于javascript - 覆盖嵌套的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880381/

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