從湯姆大叔的博客裏看到了6個基礎題目:本篇是第5題 - 實現以下語法的功能:var a = (5).plus(3).minus(6); //2html
解題關鍵:函數
一、理解使用(5)和5的區別this
二、構造函數原型的擴展(Object.prototype)spa
console.log( (5).toString() ); // 5 console.log( 5.toString() ); // Unexpected token ILLEGAL
(5)是一個表達式,它會返回一個Number對象,而5是一個常量,不會返回一個Number對象。prototype
js中,全部的數字都是一個Number對象,也能夠理解爲"數字是根據Number構造函數new出來的實例"。每個對象都有原型,一旦對某個構造函數的原型添加屬性或方法,那麼以此構造函數new出來的實例都會增長此屬性或方法,如題,咱們只須要對Number進行擴展plus和minus兩個方法便可解決該問題,代碼以下:code
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等……htm
此解解答完畢!對象