问题在于内置Number object(原始包装器)。
var n = new Number(2);
console.log(n); // Number {}
console.log(typeof n); // "object"
n++;
console.log(n); // 3
console.log(typeof n); // "number"
我可以看到JS在这里进行了一个隐式的类型转换。确切地说,将Number
对象向下转换为number
原语。有没有办法在没有这种向下转换的情况下修改Number对象?
答案 0 :(得分:1)
不,Number
个实例是不可变的。你必须这样做:
n = new Number(++n);
获取比先前实例更大的新实例。