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();
我有几个类型为 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();