gpt4 book ai didi

Javascript:Node.prototype 有什么不同吗?出于某种原因,我无法在没有错误的情况下修改它

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

我目前正在尝试通过修改原型(prototype)为在线浏览器游戏编写用户脚本(代码已加密,所以这是我能做到的唯一方法)。通常我会做的是这样的:

var fillz = CanvasRenderingContext2D.prototype.fill;
CanvasRenderingContext2D.prototype.fill = function(){
var arguments_ = arguments;

// based on the extension, modify arguments_ as needed

fillz.apply(this, arguments_);
};

最近,我需要对 Node.prototype.appendChild 进行一些编辑。但出于某种原因,此处的基本代码:

var appndchld = Node.prototype.appendChild;
Node.prototype.appendChild = function(){
appndchld.apply(this, arguments);
}

不断抛出错误。据我所知,它永远不会抛出错误,因为我什至还没有进行任何编辑。

有什么见解吗?谢谢

最佳答案

Node.appendChild()返回一个值,因此如果代码的任何部分期望函数返回一个值,那么它将失败。

您需要更改我们的代码,以便它返回原始调用的值:

var appndchld = Node.prototype.appendChild;
Node.prototype.appendChild = function(){
return appndchld.apply(this, arguments);
}

你应该总是假设你覆盖的函数有一个返回值,并在你的包装器中使用return。即使它没有,我仍然会添加 return,因为它将保存到函数将来有返回值的情况。

关于Javascript:Node.prototype 有什么不同吗?出于某种原因,我无法在没有错误的情况下修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634636/

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