前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript技巧:扩展和优化Math对象的方法

JavaScript技巧:扩展和优化Math对象的方法

原创
作者头像
泽霖
发布2024-02-15 23:27:43
1620
发布2024-02-15 23:27:43

扩展“Math”对象

JavaScript提供了一个Math对象,涵盖了各种有用的常数和函数。然而,有时候可能会遇到缺少某个函数或者内置函数无法提供所需功能的情况。而且,不是每个人都喜欢所有Math函数都需要以“Math”为前缀。但幸运的是,JavaScript是一种灵活的语言,有一些方法可以帮助解决这个问题。

扩展“Math”对象

事实上,JavaScript对象没有任何访问保护可以被视为一个弱点。但在我们目前的情况下,这是一个优点。你可以很容易地修改现有函数,甚至向“Math”对象添加新函数。下面是一个例子,round()函数不允许设置小数。但这可以很容易地解决:

代码语言:javascript
复制
Math._round = Math.round
Math.round = (f, n = 0) => { 
  let m = Math.pow(10, n)
  return (Math._round(f * m) / m)
}

在这里,我们将初始round函数存储在一个名为_round的新属性中。然后,我们可以用一个新函数重写初始属性。

我们还可以向Math对象添加一些有用的内容:

代码语言:javascript
复制
Math.PI2 = 2*Math.PI

// Range-Check: True if x in Range (L .. H)
Math.inRange = (x, L, H) => (x < L) ? false : x <= H  

// Constrain value: Limit x to range (L .. H)
Math.constrain = (x, L, H) => x < L ?  L : x > H ? H : x 

新函数可以无缝地工作,就像它们是内置的一样。

Math解构

那么,如何摆脱Math前缀呢?在这里,你可以使用对象解构:

代码语言:javascript
复制
let {sin, cos, round, inRange, constrain, PI, PI2} = Math

现在这些函数在全局范围内都是可用的:

代码语言:javascript
复制
round(sin(0.1*PI2),3) // -> 0.588
inRange(3.158,2,4) // -> true
constrain(3.158,4,5) // -> 4

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 扩展“Math”对象
  • Math解构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档