一道js笔试题?

原题是:

     var a=(10).add(20).reduce(2).add(10);//意思是10加20减2加10要求用原生js实现。

这题我的解题思路是用Number.prototype添加方法,但是现在问题来了,当一个数字调用add函数时,例如以(10).add(20)为例:

Number.prototype.add=function(num){
        //在这里我想要获得10来与num相加,但是发现用this行不通,求大神指点迷津
}
阅读 3.5k
3 个回答

你调用的时候要加上Number转换成一个number类型的对象,要想链式调用,返回值也加一个Number转换一下吧

Number.prototype.add=function(num){return Number(this + num)}
Number(10).add(20).add(30)

其实没那么麻烦,我也搞麻烦了,你把10赋值一个变量就好

var a = 10

又试了一下题主的方法

Number.prototype.add=function(num){return this+num}
(10).add(20)

chrome控制台下面是没问题的,10加上括号就好了,不加就会报错...

没发现任何问题,但是那个reduce用来当减法不好,原生js的归并就是reduce

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题