Haf*_*fiz 1 javascript python operator-overloading
是否可以在javascript中添加一些新语法?就像我希望它有一个类似的synatx:
mul>10>20结果200或者说mul(2)(3)结果为6?有可能的?我在某个地方看到了类似的问题吗?所以我不确定它是否可能?如果不是在JS中,它可以在其他语言中使用,如C,Java,Python吗?我的理解是,所有这些语言只能为新对象添加一些功能,甚至那些新对象只能拥有语言本身已有的运算符和语法?我是正确的还是可以为这些语言添加新语法?
mon*_*ers 12
回答你的更广泛的问题是写入到您正在使用的语言,意为宗旨,以解决您的问题,这是提供给您的工具.
然而,你给出的第二个例子实际上已经是一个相当普遍的模式,称为currying.您可以使用以下内容扩展Javascript以实现此目的:
Function.prototype.curry = function() {
var fn = this, args = Array.prototype.slice.call(arguments);
return function() {
return fn.apply(this, args.concat(
Array.prototype.slice.call(arguments)));
};
};
Run Code Online (Sandbox Code Playgroud)
假设mul(a, b)是:
function mul(a, b) {
return a * b;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 mul.curry(2)(3)
这是一个小提琴
有关此设计模式的更深入解释,请查看http://ejohn.org/blog/partial-functions-in-javascript/