![]() |
1
33
据我所知,javascript(至少现在已经存在)不支持运算符重载。 我能建议的最好的方法是使用类方法从其他几个对象中创建新的配额对象。以下是我的一个简单例子:
使用方式如下:
|
![]() |
2
19
不幸的是,没有。 对于回退,如果排列返回值,则可以使用方法链接
|
![]() |
3
13
由于每个人都投了我的另一个答案,我想发布概念验证代码,它实际上按预期工作。 这已经在Chrome和IE中测试过了。
如果有人能很好地解释为什么这不够好,我会很高兴听到的! |
![]() |
4
7
第二条建议:
|
![]() |
5
5
我最近发现了这篇文章: http://www.2ality.com/2011/12/fake-operator-overloading.html . 它描述了如何在对象上重新定义方法的值,以执行类似于javascript中的运算符重载之类的操作。似乎您只能对正在操作的对象执行mutator操作,所以它不会执行您想要的操作。尽管如此,它还是很有趣。 |
![]() |
6
4
您可以隐式转换为整数或字符串,您的对象 只有当javascript需要数字或字符串时,才会隐式转换对象。在前一种情况下,转换需要三个步骤: 1.-调用valueof()。如果结果是基元(不是对象),则使用它并将其转换为数字。 2.-否则,调用ToString()。如果结果是原语,请使用它并将其转换为数字。 3.-否则,抛出一个类型错误。 步骤1的示例:
如果javascript转换为字符串,则交换步骤1和2:首先尝试toString(),然后尝试valueof()。 http://www.2ality.com/2013/04/quirk-implicit-conversion.html |
![]() |
7
4
paper.js会这样做,例如添加点( docs ):
但它用自己的 custom script parser . |
![]() |
8
2
我不知道为什么人们会继续不回答这个问题! 我绝对可以用一个非常小的剧本来概括,你不必非得是约翰·雷西格才能理解… 在我这样做之前,我还将说明在JavaScript中,构造函数的工作方式是检查数组或迭代“arguments”文本。 例如,在我的“类”的构造函数中,我将迭代这些规则,确定底层规则的类型,并智能地处理它。 这意味着,如果您传递了一个数组,我将迭代这些数组以查找数组,然后迭代该数组以根据数组中元素的类型进行进一步的处理。 例如->新建SomeClass([实例A、实例B、实例C]) 然而,你们正在寻找一种更“C”风格的方法来处理运算符重载,这种方法实际上可以实现,这与大众的看法相反。 这里有一个类,我使用moooltools创建的,它支持操作符重载。在普通的旧JavaScript中,您只需使用相同的ToString方法,只需将其直接附加到实例的原型上。 我显示这种方法的主要原因是因为我不断阅读的文本指出这种功能是“不可能”模仿的。没有什么是不可能的,只有足够的困难,我将在下面显示这个…
在xdate的文档页面上可以看到该术语的最新显示: http://arshaw.com/xdate/ 在这种情况下,我认为这实际上更容易,他可以使用日期对象的原型来实现同样的效果。 我举了一个例子来说明这种对他人的利用方式。 编辑: 我在这里有一个完整的实现: 以及其他的好东西。 |
![]() |
9
2
我编写了一个脚本,用于在javascript中进行运算符重载。这不是直接的工作,所以有一些怪癖。我将在项目页面交叉发布警告,否则您可以在底部找到链接:
这个 Github page . |
![]() |
10
1
除了已经说过的:overriding.valueof()还有助于产生非常强大的运算符重载。概念证明 Fingers.js lib可以添加.NET样式的事件侦听器:
核心思想是在调用on()时临时替换valueof:
然后可以使用处理程序数组将返回的数字反序列化回函数。此外,还可以从最终值(func1+func2-func3)中提取位值,从而有效地了解添加的函数以及删除的函数。 您可以在上签出源 github 和一起玩 demo here . 此中存在完整的解释 article (这是针对AS3的,很难,因为它是ecmascript,也适用于JS)。 |
![]() |
11
-1
对于某些有限的用例,可以使用运算符“重载”效果:
以上代码在麻省理工学院许可证下免费使用。YMMV。 |
![]() |
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 6 月前 |
![]() |
Alex · 在轻量级中同时解构和不解构变量 6 月前 |
![]() |
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 6 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 6 月前 |
![]() |
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 7 月前 |