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

时间:2015-10-28 10:12:47

标签: javascript defineproperty

我很少有number类型的变量(或者也就是字符串)。 我想为这些变量添加一些元数据。

当我尝试使用Object.defineProperty(myvar, "prop", {/*getter & setter*/})时,它会给出一个错误,即myvar不是一个对象。

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

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

1 个答案:

答案 0 :(得分:0)

你可以通过原型继承来做到这一点。 像这样使用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*/});

你将在原型中获得一个Object以及Number的方法。

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

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

字符串相同:

    var myVar = new String();