javascript如何让1+1等于任何值?

我们都知道,在javascript中:

1+1
2
new Number(1) + new Number(1)
2

那么问题来了,比如我想让1+1 = 6或者等于任何我想等于的数,该怎么做呢,查了下文档,好像没找到,某歌某度也没找到相关的资料,只能自己从Number类型下功夫,发现其原型上应该有相关 的方法,话不多说,直接撸码。

Number.prototype.valueOf = function(){
 return 3
}
nem Number(1) + new Number(1)
6

 

如上,我们可以看到结果是我们想要的,所以可以在原型上设置任何值,其原理就是覆盖Number的内置方法。但是上面的方法有问题吗?有,比如下面这个例子:

[new Number(1)].join()
"1"

我们发现这个方法并没有返回我们预定的3,那3跑哪去了,其实这个方法并没有执行我们上面的valueOf方法,我们可以继续在原型上下功夫,代码如下:

Number.prototype.toString = function(){
  return 3
}
[new Number(1)].join()
"3"

这样就可以了,是不是挺有意思的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值