如何在纯 JavaScript 中重写本机 JS 函数( canvas 的 getContext() )?

N.h*_*ang 4 javascript overriding html5-canvas

我想当 canvas 元素调用 'getContext('webgl')' 时,返回 'null' 值。

我试图找到WebGLRenderingContext原型并更新它,但我找不到它。

WebGLRenderingContext并且WebGLRenderingContextBase没有prototype.getContext.

我怎样才能改变它返回“空”值?

我已经用下面的测试过了..

var test = document.createElement('canvas');`
test.getContext("webgl");`
Run Code Online (Sandbox Code Playgroud)

这返回WebGLRenderingContext对象...

请帮我 :)

dfs*_*fsq 5

搞乱原生原型?好吧,我假设你知道自己在做什么。如果是这样,并且您确实想覆盖getContext原型方法,您可以使用简单的装饰器来实现HTMLCanvasElement.prototype.getContext

HTMLCanvasElement.prototype.getContext = function (orig) {
  return function(type) {
    return type !== "webgl" ? orig.apply(this, arguments) : null
  }
}(HTMLCanvasElement.prototype.getContext)
Run Code Online (Sandbox Code Playgroud)

因此,对于 2d、3d 等任何上下文,它都会正常工作,但对于“webgl”,它将给出null. 但不知道为什么你需要这个。