我几乎没有类型的变量number
(或者也有字符串)。我想为这些变量添加一些元数据。
当我尝试使用Object.defineProperty(myvar, "prop", {/*getter & setter*/})
它时,它会给出一个错误,即 myvar 不是对象。
如何使用 getter 和 setter 方法在非对象上定义属性?
我不想添加任何东西,Number.prototype
因为我只希望在少数变量上使用这些属性。
我几乎没有类型的变量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();