Có thể ghi đè so sánh tương đương trong Javascript không?Ghi đè so sánh tương đương trong Javascript
Gần nhất tôi đã nhận được một giải pháp là bằng cách xác định hàm valueOf và gọi valueOf với dấu cộng ở phía trước đối tượng.
Tác phẩm này.
equal(+x == +y, true);
Nhưng điều này không thành công.
equal(x == y, true, "why does this fail.");
Đây là các trường hợp thử nghiệm của tôi.
var Obj = function (val) {
this.value = val;
};
Obj.prototype.toString = function() {
return this.value;
};
Obj.prototype.valueOf = function() {
return this.value;
};
var x = new Obj(42);
var y = new Obj(42);
var z = new Obj(10);
test("Comparing custom objects", function() {
equal(x >= y, true);
equal(x <= y, true);
equal(x >= z, true);
equal(y >= z, true);
equal(x.toString(), y.toString());
equal(+x == +y, true);
equal(x == y, true, "why does this fails.");
});
Demo đây: http://jsfiddle.net/tWyHg/5/
Chính xác bạn đang cố gắng đạt được điều gì ở đây? –
@ElliotBonneville Tôi đang tạo các đối tượng phân số trong javascript. –
Các đối tượng phân số trông như thế nào? Chúng ta có thể thấy một số ví dụ đầu vào? Hoặc có lẽ tôi chỉ hiểu lầm những gì bạn đang cố gắng làm ... –