Rhy*_*den 5 javascript html5 canvas
我是Javascript的新手.我正在使用canvas进行一些图像处理,我正在尝试创建一个新的CanvasImageData对象而不实际引用特定的Canvas.
即.
oImageData = CanvasRenderingContext2D.createImageData(vCSSWidth, vCSSHeight)
Run Code Online (Sandbox Code Playgroud)
(来自MSDN)
// Why can't I write:
var image_data = CanvasRenderingContext2D.createImageData(50, 50);
// or:
var image_data = CanvasRenderingContext2D.prototype.createImageData(50, 50);
// ?
// Instead I must do:
var canvas = document.createElement("canvas");
var image_data = canvas.createImageData(50, 50);
Run Code Online (Sandbox Code Playgroud)
有没有Canvas实例的方法呢?如果不是有原因吗?
谢谢!
您当然可以引用createImageData接口原型对象:
CanvasRenderingContext2D.prototype.createImageData.call({ }, 100, 100); // ImageData
Run Code Online (Sandbox Code Playgroud)
createImageData但是,某些环境(例如 WebKit)对要调用的方法(以及可能的其他方法)上下文中的对象类型添加了限制:
CanvasRenderingContext2D.prototype.createImageData.call({ }, 100, 100); // TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)
这至少在 Firefox nightly 中有效(刚刚检查过)。
让我想起其他 WebKit 的上下文限制console.log:
console.log.call({ }, 1); // TypeError: Illegal invocation
console.log.call(console, 1); // logs 1
Run Code Online (Sandbox Code Playgroud)