Javascript 扩展或包装canvas.getContext()接收的对象

Javascript 扩展或包装canvas.getContext()接收的对象,javascript,canvas,webgl,webgl2,Javascript,Canvas,Webgl,Webgl2,是否有可能获得具有接收到的上下文原型的对象 let webgl = canvas.getContext('webgl2', params) || canvas.getContext('webgl', params) || canvas.getContext('experimental-webgl', params); let myObj1 = Object.create(webgl) let myObj2 = { __proto__ : webgl, myMetho

是否有可能获得具有接收到的上下文原型的对象

let webgl = canvas.getContext('webgl2', params) || canvas.getContext('webgl', params) || canvas.getContext('experimental-webgl', params);

    
let myObj1 = Object.create(webgl)

let myObj2 = {
    __proto__ : webgl,
    myMethod(){}
}

这些方法和这些方法的其他变体在引用标准上下文方法时会捕获非法调用的错误。

我不确定您要做什么

有很多包装原型的例子

示例:*

*

我不知道你所说的捕获
非法调用
错误是什么意思

如果您想直接包装函数而不是原型,那么

const gl=document.querySelector('canvas').getContext('webgl');
gl.clearColor=函数(origFn){
返回函数(…args){
log(`clear(${args.join(',')})`);
原始呼叫(此,…args);
};
}(gl.clearColor);
gl.clearColor(0.2,0.5,0.7,1.0);
总账清除(总账颜色缓冲位)

我不知道你想做什么

有很多包装原型的例子

示例:*

*

我不知道你所说的捕获
非法调用
错误是什么意思

如果您想直接包装函数而不是原型,那么

const gl=document.querySelector('canvas').getContext('webgl');
gl.clearColor=函数(origFn){
返回函数(…args){
log(`clear(${args.join(',')})`);
原始呼叫(此,…args);
};
}(gl.clearColor);
gl.clearColor(0.2,0.5,0.7,1.0);
总账清除(总账颜色缓冲位)