Javascript:Node.prototype有什么不同吗?由于某些原因,我不能修改它而不出错

Javascript:Node.prototype有什么不同吗?由于某些原因,我不能修改它而不出错,javascript,prototype,nodes,Javascript,Prototype,Nodes,我目前正试图通过修改原型为在线浏览器游戏编写一个用户脚本(代码是加密的,所以这是我唯一能做到的)。通常我会这样做: var fillz = CanvasRenderingContext2D.prototype.fill; CanvasRenderingContext2D.prototype.fill = function(){ var arguments_ = arguments; // based on the extension, modify arguments_ as

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

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);
}
不断地抛出错误。据我所知,它永远不会抛出错误,因为我甚至还没有做任何编辑

有什么见解吗?thx返回一个值,因此如果代码的任何部分期望函数返回一个值,那么它将失败

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

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

您应该始终假定覆盖的函数有一个返回值,并在包装器中使用
return
。即使它没有返回值,我仍然会添加
返回值
,因为它会将它保存到,以备将来函数会有返回值。

好,这很有意义,谢谢提示;D由于某种原因,我想我从来没有覆盖过使用返回值的内容,所以我从来没有想过P