实现如下语法的功能:var a = (5).plus(3).minus(6); //2

汤姆大叔的博客里看到了6个基础题目:本篇是第5题 - 实现如下语法的功能:var a = (5).plus(3).minus(6); //2

 

解题关键:

1、理解使用(5)和5的区别

2、构造函数原型的扩展(Object.prototype)

 

解点1:理解使用(5)和5的区别

console.log( (5).toString() ); // 5
console.log( 5.toString() ); // Unexpected token ILLEGAL

(5)是一个表达式,它会返回一个Number对象,而5是一个常量,不会返回一个Number对象。

 

解点2:构造函数原型的扩展

js中,所有的数字都是一个Number对象,也可以理解为"数字是根据Number构造函数new出来的实例"。每一个对象都有原型,一旦对某个构造函数的原型添加属性或方法,那么以此构造函数new出来的实例都会增加此属性或方法,如题,我们只需要对Number进行扩展plus和minus两个方法即可解决该问题,代码如下:

Number.prototype.plus = function(n) {
    return this.valueOf() + n;
}
Number.prototype.minus = function(n) {
    return this.valueOf() - n;
}
console.log( (5).plus(3).minus(6) ) //2

 

根据解此题的思路,还可扩展String/Math等……

此解解答完毕!

posted @ 2017-03-28 23:29  北磬  阅读(1309)  评论(0编辑  收藏  举报

博客作者:北馨书生