javascript - 修改JavaScript内置原型(prototype)是不是反模式?

标签 javascript canvas anti-patterns prototype

我从this post了解到,在 JavaScript 中修改 Object 的原型(prototype)是一种反模式。但是,我很好奇它是否被广泛认为是修改其他“内置”原型(prototype)的反模式。

例如:假设我们想向 CanvasRenderingContext2D 添加一个 setPixel(x,y,color) 函数 - 以抽象出获取上下文图像数据的职责,将像素设置为特定颜色,并将图像数据放回。

CanvasRenderingContext2D.prototype.setPixel = function(x, y, color){
    var imgdata = this.createImageData(1,1);
    imgdata.data[0] = color.r;
    imgdata.data[1] = color.g;
    imgdata.data[2] = color.b;
    imgdata.data[3] = color.a;
    this.putImageData(imgdata,x,y);
};

我还没有测试过这段代码,但你明白了。这样的事情是否违反“最佳实践”?

最佳答案

我不会这样做,因为它很难跟踪在何处实现的内容。它还引入了两个人覆盖同一行为的风险。

关于javascript - 修改JavaScript内置原型(prototype)是不是反模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1676383/

相关文章:

javascript - 仅识别输入中的数字标记 (JavaScript)

javascript - 在 openlayers 标记中使用图标时如何等待 css

design-patterns - 全局常量是反模式吗?

class - 项目中有太多的单例 - 这是一种不好的做法吗?

scala - 将 ActorRef 传递给其他 Actor 是好是坏?

javascript - 使用 css/javascript 旋转图像

javascript - 解释 Facebook access_token

javascript - HTML5 视频到 Canvas 播放速度很慢

javascript - 用于叠加渐变的 HTML5 Canvas globalCompositeOperation 不会增加更高的强度?

javascript - 检测弧内点击