gpt4 book ai didi

javascript - 使变量成为具有属性的对象?

转载 作者:行者123 更新时间:2023-11-28 14:46:20 24 4
gpt4 key购买 nike

我想做的是这样的:

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()

最佳答案

您可以使用 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 现在是一个对象,而不是原始数字。但如果您在计算中使用它,则将使用原始值。

如果您想对任何地方的所有数字执行此操作,您可以向 Number.prototype 添加一个 lighten 函数。由于存在冲突的风险,通常不鼓励向原型(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();

但同样,在扩展内置原型(prototype)之前请仔细考虑。如果您这样做:

  • 切勿在要与他人共享的库代码中执行此操作
  • 仅添加不可枚举属性(通过使用 Object.defineProperty)
  • 请注意,随着 JavaScript 标准库的发展,可能会与后来添加的功能发生冲突

关于javascript - 使变量成为具有属性的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46266629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com