1

我几乎没有类型的变量number(或者也有字符串)。我想为这些变量添加一些元数据。

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

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

我不想添加任何东西,Number.prototype因为我只希望在少数变量上使用这些属性。

4

1 回答 1

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*/});

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

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

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

字符串也一样:

    var myVar = new String();
于 2015-10-28T10:23:18.667 回答