JS:如何定义数值变量的属性

JS: how to define properties on numeric variables

我有几个类型为 number 的变量(或者就此而言也是字符串)。 我想向这些变量添加一些元数据。

当我尝试使用 Object.defineProperty(myvar, "prop", {/*getter & setter*/}) 时出现错误,提示 myvar 不是对象。

如何使用 getter 和 setter 方法在非对象上定义 属性?

我不想向 Number.prototype 添加任何内容,因为我只想在几个变量上使用这些属性。

你可以通过原型继承来做到这一点。 像这样使用 Number.prototype

var proto = Object.create(Number.prototype);
function MyNumber() {
}
MyNumber.prototype = proto;
MyNumber.prototype.constructor = MyNumber;
MyNumber.prototype.someOwnMethod = function () {
}
// and so on
var myVar = new MyNumber();
Object.defineProperty(myvar, "prop", {/*getter & setter*/});

您将在原型中获得对象以及 Number 的方法。

或者如果您不需要任何自己的方法,只需使用 Number 构造函数而不是数字文字。

var myVar = new Number();
Object.defineProperty(myvar, "prop", {/*getter & setter*/});

字符串相同:

    var myVar = new String();