在JavaScript中重载算术运算符?
考虑到这个JavaScript“类”定义,这是我能想到的最好的方法来解决这个问题:
var Quota = function(hours, minutes, seconds){ if (arguments.length === 3) { this.hours = hours; this.minutes = minutes; this.seconds = seconds; this.totalMilliseconds = Math.floor((hours * 3600000)) + Math.floor((minutes * 60000)) + Math.floor((seconds * 1000)); } else if (arguments.length === 1) { this.totalMilliseconds = hours; this.hours = Math.floor(this.totalMilliseconds / 3600000); this.minutes = Math.floor((this.totalMilliseconds % 3600000) / 60000); this.seconds = Math.floor(((this.totalMilliseconds % 3600000) % 60000) / 1000); } this.padL = function(val){ return (val.toString().length === 1) ? "0" + val : val; }; this.toString = function(){ return this.padL(this.hours) + ":" + this.padL(this.minutes) + ":" + this.padL(this.seconds); }; this.valueOf = function(){ return this.totalMilliseconds; };};
以及以下测试设置代码:
var q1 = new Quota(23, 58, 50);var q2 = new Quota(0, 1, 0);var q3 = new Quota(0, 0, 10);console.log("Quota 01 is " + q1.toString()); // Prints "Quota 01 is 23:58:50"console.log("Quota 02 is " + q2.toString()); // Prints "Quota 02 is 00:01:00"console.log("Quota 03 is " + q3.toString()); // Prints "Quota 03 is 00:00:10"
是否有隐式创建的任何方式q4
为Quota
使用加法运算符如下对象...
var q4 = q1 + q2 + q3;console.log("Quota 04 is " + q4.toString()); // Prints "Quota 04 is 86400000"
而不是诉诸......
var q4 = new Quota(q1 + q2 + q3);console.log("Quota 04 is " + q4.toString()); // Prints "Quota 04 is 24:00:00"
如果不是这个领域的最佳实践建议是什么,可以通过算术运算符组合自定义数字JavaScript对象?
九州编程
犯罪嫌疑人X
相关分类