實現以下語法的功能:var a = (5).plus(3).minus(6); //2

湯姆大叔的博客裏看到了6個基礎題目:本篇是第5題 - 實現以下語法的功能:var a = (5).plus(3).minus(6); //2html

 

解題關鍵:函數

一、理解使用(5)和5的區別this

二、構造函數原型的擴展(Object.prototype)spa

 

解點1:理解使用(5)和5的區別

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

(5)是一個表達式,它會返回一個Number對象,而5是一個常量,不會返回一個Number對象。prototype

 

解點2:構造函數原型的擴展

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

此解解答完畢!對象

相關文章
相關標籤/搜索