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