我已經使用Dojo.declare創建了新對象。如何重載運算符==的對象?如何爲JavaScript對象重載運算符等於
回答
你不能重載==
,但==
有一個隱.toString()
通話,所以無論.toString()
回報將讓你有效超載==
(有點):
function foo(){}
foo.prototype.toString = function(){ return 42; }
var x = new foo();
x == 42; // true
至於如何做到這一點的道場,我不使用道場,對不起,但要點是你得到一個任何對象創建的參考,並添加thatObject.prototype.toString
如我的例子。
對於一個對象和一個原語,也許。雖然'valueOf'是你想要重寫的。但不是兩個對象。 'new String('x')!= new String('x')'儘管兩個對象的toString方法都返回相同的值。 – 2011-04-11 15:53:27
@Mike - 嗯。你是對的。對象相等不適用,因爲只有內存地址檢查... – 2011-04-11 16:28:09
即使對象和原始比較,優先級將賦予'valueOf'實現。 – 2015-08-07 23:13:20
你不能。 JavaScript不支持運算符重載。
你不能在Java/ECMAscript中。您只能使用Adobe的ExtendScript重載操作符。見this example。另請參閱blog entry(pro)或this(contra)。
這似乎只適用於ActionScript。 – 2011-04-11 09:23:10
@Joachim Sauer:wtf?這就是我說的這個答案!添加一些鏈接以顯示ECMAscript的操作符重載討論。 – KooiInc 2011-04-11 09:27:07
你之前的措辭沒有說清楚。 – 2011-04-11 09:35:04
- 1. 重載「設置爲等於」運算符
- 2. javascript等於運算符
- 3. 對象和運算符重載C++
- 4. 關於運算符重載
- 5. 如何重載運算符=
- 6. 如何重載==運算符?
- 7. 如何重載運算符[] []
- 8. 運算符重載如何爲賦值運算符工作?
- 9. 重載運算符<用於指向類對象的指針
- 10. 重載減法運算符用於刪除對象
- 11. gmtime不適用於重載運算符讀取的對象
- 12. 運算符重載 - 如何更改對象的位置?
- 13. 抽象類重載算術運算符
- 14. 如何將JavaScript邏輯運算符用於對象屬性?
- 15. 如何重載ostream運算符<<對於pimpl類?
- 16. C++運算符重載是相等的運算符
- 17. 平等運算符在Allegro中重載
- 18. JavaScript等價於? C#中的運算符
- 19. 當我的對象位於C++的右側時,如何重載運算符*?
- 20. 使用重載運算符=爲複製對象
- 21. 爲自己的類/對象重載(+)運算符
- 22. 使用引用和指針爲運算符重載大對象
- 23. 運算符重載+爲了總計兩個對象
- 24. 運算符重載 - 重載*
- 25. 如何爲一組配對重載比較運算符?
- 26. 在結構體中重載double等於運算符?
- 27. 重載運算符
- 28. 運算符重載
- 29. 重載運算符*
- 30. *運算符重載
可能重複[在JavaScript中重載算術運算符?](http://stackoverflow.com/questions/1634341/overloading-arithmetic-arrators-in-javascript) – 2015-12-18 00:01:42
這裏:https://stackoverflow.com/q/ 10539938/632951 – Pacerier 2017-09-19 00:12:47