我想做的是这样的事情:
var num = Math.round(Math.random() * 3);
所以假设num结果为3,我想在其上添加一个方法并调用它像
num.lighten()
但是num必须是3,我想到了这样的事情:
var randomNum = Math.round(Math.random() * 3)
randomNum = { lighten: () => "hello world" } // it gets override
或类似的东西,为随机生成的数字分配方法:
var Math.round(Math.random() * 3) = { lighten: () => "hello world" }
我想把它称为
3.lighten()
答案 0 :(得分:4)
您可以使用Number
对象执行此操作:
var num = new Number(Math.round(Math.random() * 3));
num.lighten = function() {
console.log("hello world, my value is " + this);
};
num.lighten();
var numPlus3 = num + 3;
console.log("num plus 3 is " + numPlus3);

请注意,num
现在是一个对象,而不是一个原始数字。但是如果你在计算中使用它,将使用原始值。
如果您想为所有号码执行此操作,那么您可以在lighten
添加Number.prototype
功能。由于存在碰撞的风险,我们常常不鼓励将功能添加到原型中,因此我根本不会在库中执行此操作,并且在应用程序中执行此操作之前会非常努力。但这就是看起来的样子:
// Once, in your init
Object.defineProperty(Number.prototype, "lighten", {
value: function() {
console.log("hello world, my value is " + this);
}
});
// Example of use
var num = new Number(Math.round(Math.random() * 3));
num.lighten();

但同样,在扩展内置原型之前要认真思考。如果你这样做:
Object.defineProperty
)