4

如何创建可以使用 Number 中使用的运算符的新原语或对象?

我想创建一个像 Number 这样的新对象,具有不同的名称、其他属性以及可以在哪里使用运算符,即 4+5

4

2 回答 2

0

如果您希望它专门用于数字,您可以使用 Number 对象。如果您想要它用于其他用途并且仅使用 Number 作为示例,则您不能这样做,因为 JavaScript 不支持运算符重载。

你最好的办法是通过返回函数来链接在一起thisplus所以你可以这样做:

var n1 = new MyNumber(1);
var n2 = new MyNumber(2);
var n3 = new MyNumber(3);
var sum = n1.plus(n2).plus(n3);

// sum: 6

您还必须确保MyNumber创建一个新的MyNumber并返回它,除非您想要可变数字。

于 2012-11-12T10:00:22.783 回答
0

您可以覆盖对象valueOf原型来创建自己的原语:

var N = function(n) {
    this._value = n;
}
N.prototype.valueOf = function() {
    return this._value+1;
};
console.log( new N(4) + 4 ); // 9

在此处查看示例和更多信息:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/valueOf

于 2012-11-12T10:07:46.313 回答