JS給數字新增擴充套件方法

2021-08-29 20:28:39 字數 1022 閱讀 6830

擴充套件方法就是給原生型別新增方法,讓物件用起來更加方便,js作為乙個動態語言,只要在原型鏈上稍作修改就可以給現有類新增方法(在js裡提類可能不太恰當,但是我想不出別的說法了)

先回憶一下如何給array新增乙個拓展方法

array.prototype.get=function (index)
這樣就給array新增了乙個get方法,這個方法沒有太多意義,只是用作示範

然後我們就可以對js裡的array呼叫get了

console.log([1,2,3].get(1))//輸出2
以上這些相信很多人都已經知道了,但是我以前一直沒有找到給純數字新增拓展方法的辦法,例如一些現代語言裡就有這種 10.times(lambda)就可以快速呼叫十次某方法。

js裡確實也可以找到數字型別的原型,那就是它對應的包裝物件number,但是加了方法之後直接呼叫會有問題,因為實際上js裡基本型別沒有方法,呼叫時全部是委託給包裝型別的,這也可以看出js和其他一些動態語言的區別,例如ruby裡就沒有基本型別,所有的東西都是物件

//給數字型別新增擴充套件方法

number.prototype.times=function (fun) {

for(var i=0;iconsole.log(i))

//顯式建立包裝物件就可以了

var a=new number(10)

//控制台輸出0-9

a.times(i=>console.log(i))

和數字不一樣,string也是基本型別卻不會有這個問題,新增擴充套件方法後,直接"***".dosth()就可以

直到今天,在複習js一些問題的時候又回想起這個東西,突然覺得可能僅僅只是js虛擬機器內部的邏輯問題,然後試著加了個(),想想是不是這樣就可以將基本型別的數字轉化成包裝型別,然後居然就成了,特此記錄一下

//這個可以執行 在控制台輸出0-9

(10).times(i=>console.log(i))

給JS物件新增擴充套件方法

如何在js中像c 語法一樣,呼叫str.trim 呢?在js中string物件自己也有trim方法,可通過str.trim 實現 在jquery中jquery物件也封裝了trim方法,可通過 trim str 實現 可是對於trimstart,trimend的方法,js的string物件並沒有對應方...

jquery新增擴充套件方法

jquery提拱兩個方法開發外掛程式 jquery.fn.extend object jquery.fn jquery.prototype jquery.extend object jquery.fn.extend object 為jquery物件新增方,jquery.extend object 擴...

js給動態新增的元素新增屬性

將一段標籤動態新增到div中,給這段標籤的img標籤設定width 100 一開始設定了新增類名 內容 const content res.data.data.info.content document.getelementbyid content innerhtml content var a d...