gpt4 book ai didi

JavaScript 重复委托(delegate)创建

转载 作者:行者123 更新时间:2023-11-29 20:20:29 25 4
gpt4 key购买 nike

我正在为 HTML5 canvas 创建一个小型包装器,我正在做的一件事是从我包装的每个方法中返回 self/this 以简化调用链。

由于没有更好的名字,我称我的包装器为 Canvas。它基本上将 Canvas 和上下文包装在一起。

我做的一件事是将以下方法添加到 Canvas.prototype

Canvas.fn = Canvas.prototype = {
save: function () { this.ctx.save(); return this; },
restore: function () { this.ctx.restore(); return this; },
scale: function (x, y) { this.ctx.scale(x, y); return this; },
rotate: function (angle) { this.ctx.rotate(angle); return this; },
translate: function (x, y) { this.ctx.translate(x, y); return this; },
transform: function (a,b,c,d,e,f) { this.ctx.transform(a,b,c,d,e,f); return this; },

有没有更简单的方法来使用一些委托(delegate)来添加这些方法?也许用数组或函数名?请注意,某些方法采用参数,我想将它们原封不动地传递给实际的 self.ctx 方法。

最佳答案

是这样的吗?

var functionNames = ['save', 'restore', 'scale', 'rotate', 'translate', 'transform'];

for(var i = 0; i < functionNames.length; i++) {
(function(funcName) {
this[funcName] = function() {
this.ctx[funcName].apply(this.ctx, arguments);
return this;
};
)(functionNames[i]);
}

关于JavaScript 重复委托(delegate)创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4253617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com