當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript内置对象API
生活随笔
收集整理的這篇文章主要介紹了
javascript内置对象API
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 常用api
- Date
- String
- Math對象
- Array
- 定義對象的幾種方法
- JSON對象
- Number對象
- Boolean對象
- Storage 對象分為兩類( sessionStorage 和 localStorage)
- sessionStorage&localStorage
- Object 對象;
- Promise 對象;
- File對象||FileReader 對象
- Blob 二進(jìn)制大對象
- FormData 對象
- 遞歸函數(shù)
- 節(jié)流與防抖
- 防抖
- 節(jié)流
常用api
clearInterval() //清除定時(shí)器setInterval() //制作定時(shí)器toFixed(N) //保存N位小數(shù)arguments.length; //傳參的個(gè)數(shù);arguments對象 //保存實(shí)參,類似數(shù)組,不是數(shù)組。window.open() //打開新窗口; obj.hasOwnProperty(key) //判斷對象是否包含某個(gè)鍵;Date
get/setFullYear() //獲取/修改年份;//返回年份get/setMonth() //月份,取值范圍為0~11,所以在返回值的基礎(chǔ)加一,或者修改日期減一;get/setDate() //日期(幾號(hào)) get/setDay() //星期 //返回0~6,0代表星期天,get/setHours() //時(shí)get/setMinutes() //分get/setSeconds() //秒get/setMilliseconds() //毫秒0~999之間;get/setTime() //返回從1970年1月1日到日期對象的日期的毫秒數(shù);valueOf()//同上;Date.parse(obj) //同上;Date.now() //同上,可以不實(shí)例化對象就可以直接調(diào)用toLocaleString() //日期和時(shí)間以字符串形式輸出。xxxx/xx/xx上午xx:xx:xxtoLocaleDateString() //把時(shí)間對象轉(zhuǎn)換成年月日字符串xxxx/xx/xxtoLocaleTimeString() //把時(shí)間對象轉(zhuǎn)換成時(shí)間字符串 上午xx:xx:xx。String
fontcolor("color") //改變字符串的顏色;(相當(dāng)于添加一個(gè)font標(biāo)簽,配合innerHTML使用);fontsize("size") //改變字體大小; (相當(dāng)于添加一個(gè)font標(biāo)簽,配合innerHTML使用);bold() //字體加粗; (相當(dāng)于添加一個(gè)font標(biāo)簽,配合innerHTML使用);italics() //字體斜體; (相當(dāng)于添加一個(gè)font標(biāo)簽,配合innerHTML使用);indexOf(index) //索引返回位置 兩個(gè)參 第一個(gè)是索引下標(biāo) 第二個(gè)是位置charAt(char) //索引字節(jié) 返回字節(jié)的值 索引的是個(gè)下標(biāo);charCodeAt(index) //索引字節(jié) 返回字節(jié)的ASCII碼 索引的是下標(biāo),超出范圍為索引到返回NaN, ;String.fromCharCode() 將ASCII碼轉(zhuǎn)換成字符串;startsWith(char) //判斷字符串是不是以char開頭;endsWith(char) //判斷字符串是不是以char結(jié)束; includes(string,index) //判斷字符串是不是包含字符串,index是開始查找的位置; trim() //修剪兩端的空格 去除字符串兩端的空格 ;split('char') //分割字符串, 返回一個(gè)數(shù)組 第一個(gè)值是分割的字節(jié) 第二個(gè)值是分割數(shù)組的長度;slice(starindex,endindex) //(切片 截取字符串)第一次參數(shù)是開始,第二個(gè)參數(shù)結(jié)束,開始截取,結(jié)束不截取,按照下標(biāo)截取字符串;substring(starindex,endindex) //(截取字符串)提取兩個(gè)字符之間的字符串,與slice不同之處在于負(fù)數(shù)自動(dòng)轉(zhuǎn)化為0,開始值與結(jié)束值可以互換;substr( 'index','length') //(抽取指定字符的字符串) 同上;不同點(diǎn)在于第二個(gè)參數(shù),一個(gè)是位置,另一個(gè)是長度;toUpperCase() //來將文本轉(zhuǎn)換為大寫;toLowerCase() //轉(zhuǎn)換成小寫;match() //索引字符串中是否包含此字節(jié),包含返回此字節(jié),不包含返回未定義 replace() //在字符串中用某些字符替換另一些字符,/char/i對大小寫敏感,/char/g對全部數(shù)組進(jìn)行替換;(不修改源字符串repeat(n) //復(fù)制字符串n次Math對象
ceil(x) //向上(大)取整,(天花板)取最接近x上面的值,比如Math.celi(3.2)==4;floor(x) //向下(小)取整,(地板)取最接近x下面的值,比如Math.floor(3.2)==3;round() //四舍五入取整;random() //返回0~1之間的隨機(jī)數(shù);max() //最大值;min() //最小值;pow(a,n) //冪運(yùn)算 a的n次方;abs(-5) //絕對值 //5max.apply(null, arr) //數(shù)組最大值; Math.abs(x) 返回 x 的絕對值 Math.exp(x) 返回 Math.E 的 x 次冪 Math.expm1(x) 等于 Math.exp(x) - 1 Math.log(x) 返回 x 的自然對數(shù) Math.log1p(x) 等于 1 + Math.log(x) Math.pow(x, power) 返回 x 的 power 次冪 Math.hypot(...nums) 返回 nums 中每個(gè)數(shù)平方和的平方根 Math.clz32(x) 返回 32 位整數(shù) x 的前置零的數(shù)量 Math.sign(x) 返回表示 x 符號(hào)的 1、0、-0 或-1 Math.trunc(x) 返回 x 的整數(shù)部分,刪除所有小數(shù) Math.sqrt(x) 返回 x 的平方根 Math.cbrt(x) 返回 x 的立方根 Math.acos(x) 返回 x 的反余弦 Math.acosh(x) 返回 x 的反雙曲余弦 Math.asin(x) 返回 x 的反正弦 Math.asinh(x) 返回 x 的反雙曲正弦 Math.atan(x) 返回 x 的反正切 Math.atanh(x) 返回 x 的反雙曲正切 Math.atan2(y, x) 返回 y/x 的反正切 Math.cos(x) 返回 x 的余弦 Math.sin(x) 返回 x 的正弦 Math.tan(x) 返回 x 的正切Array
includes() //判斷數(shù)組是否包含此內(nèi)容,返回布爾值;concat() //鏈接兩個(gè)或者多個(gè)數(shù)組,返回一個(gè)新數(shù)組,不會(huì)改變原來數(shù)組(用法:arrayobject.concat(arrayobject2)(第一個(gè)不用加)join() //分割數(shù)組,將數(shù)組以字符串的形式進(jìn)行分割,參數(shù)是分割符,每個(gè)元素之間都會(huì)加上分割符;reverse() //顛倒數(shù)組元素的位置,會(huì)改變原數(shù)組;unshift() //往數(shù)組頭部添加元素; !!!返回值為最后一個(gè)元素,原數(shù)組會(huì)被刪除;push() //往數(shù)組尾部添加元素shift() //刪除數(shù)組頭部元素;!!!返回值為第一個(gè)元素,但是原數(shù)組也會(huì)被刪除;pop() //刪除數(shù)組尾部元素;splice(刪除元素的開始下標(biāo),刪除幾個(gè)元素,替換的元素)//指定刪除元素,可以用新元素替換;(注意:刪除元素時(shí),會(huì)立即執(zhí)行,因此下標(biāo)會(huì)改變,在配合for循環(huán)時(shí),會(huì)造成順序錯(cuò)亂,記得讓i值減一);splice() //也可以把元素添加到指定位置,刪除的元素為0,會(huì)在元素下標(biāo)元素之前添加;fill() //充滿整個(gè)數(shù)組;參數(shù)是將真?zhèn)€數(shù)組數(shù)據(jù)替換成傳入的值, 也可以直接創(chuàng)建一個(gè)帶長度的數(shù)組;new Array(10) // 創(chuàng)建一個(gè)10個(gè)長度的數(shù)組;Array.isArray() //判斷是不是數(shù)組,返回值是布爾類型的 要帶父類Array來判斷;slice() //切片 選定元素(不包含選中元素) String.slice() 與 Array.slice() 相似 截取元素;sort(方法函數(shù)) //數(shù)組排序,如果有方法,執(zhí)行方法函數(shù),沒有方法執(zhí)行Unicode碼順序排序;{該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說明這兩個(gè)值的相對順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下: 若返回值<=-1,則表示 A 在排序后的序列中出現(xiàn)在 B 之前。 function sortNum(a,b){ //若返回值>-1 && <1,則表示 A 和 B 具有相同的排序順序。 return a-b; //升序,降序的話改成b-a;若返回值>=1,則表示 A 在排序后的序列中出現(xiàn)在 B 之后。 } }Array.from(Stringobject,function(value(值),key(下標(biāo)))//轉(zhuǎn)換類數(shù)組為數(shù)組, 返回值為一個(gè)全新的數(shù)組。第一個(gè)參數(shù)必填 //將類數(shù)組轉(zhuǎn)換為數(shù)組,但是字符串效果是每個(gè)字符都是數(shù)字的一個(gè)元素 ,有時(shí)候我們不想這樣,可以用字符串的split()方法; //可以選擇使用回調(diào)函數(shù),返回值為數(shù)組;forEcach() //遍歷數(shù)組; forEach(funxtion(value,index,array){//方法體,可用于二維多維數(shù)組的遍歷,沒有返回值,不能修改原數(shù)組 ; });map() //映射,對數(shù)組每個(gè)元素指定函數(shù),返回值為數(shù)組; map(function(value,index,array){;//對數(shù)組中的每一個(gè)元素運(yùn)行指點(diǎn)的函數(shù),返回每次函數(shù)調(diào)用的結(jié)果,組成新數(shù)組。//return })filter() //篩選數(shù)組, 返回一個(gè)新數(shù)組; fliter(function (value,index,array){return //判斷條件;條件為真,添加到新數(shù)組中,條件為假,不添加。字符串索引可以配合match使用; });find(function(vlaue,index,arrray){return //判斷條件,條件為真,返回第一個(gè)符合條件的; })findIndex(function(value,index,array){return //判斷條件,返回符合條件的第一個(gè)索引; }); some() //查找元素如果由于一個(gè)是否有滿足條件的元素,如果有,返回true,沒有返回false; some(functioin(value,index,array){return //判斷條件,字符串索引可以配合match使用;返回值為布爾類型; })eaery(function(value,index,array){ //判斷是否全部滿足這個(gè)元素,是返回true,不是返回false;return //判斷條件,字符串索引可以配合match使用;返回值為布爾類 })定義對象的幾種方法
1,var obj=new Object({ //通過Object()方法創(chuàng)建對象;title:'zhang';}); 2, var obj={}; //以字面量方式構(gòu)建函數(shù);3, var obj=Object.create({ //以O(shè)bjext.create()方法定義對象;title:'zhang '; });4,function ClassName(參數(shù)){ //通過構(gòu)造函數(shù)實(shí)例化對象;this.參數(shù)=參數(shù);由于我們創(chuàng)建的是 p1 對象,因此構(gòu)造函數(shù)內(nèi)部的this指的就是 obj對象。注: 構(gòu)造函數(shù)中的 this 指的是對象,具體指哪個(gè)對象,需要看誰訪問構(gòu)造函數(shù)中的屬性/方法 } var obj = ClassName(實(shí)參);JSON對象
格式:{ "id":1,"uname":'jon' } //key必須要雙引號(hào)包裹,值可以用單引號(hào);JSON.parse() //將json數(shù)據(jù)轉(zhuǎn)換成對象;JSON.stringify() //將對象轉(zhuǎn)化成JSON數(shù)據(jù);將字符串轉(zhuǎn)化json對象:var json = JSON.parse(str); var json = eval("(" + str + ")"); //不必遵守格式 var json = (new Function("return " + str))(); //不必遵守格式Number對象
Number() //將其他類轉(zhuǎn)換成數(shù)字;parseInt() //轉(zhuǎn)換為Int類型;parseFloat() //轉(zhuǎn)換為Float類型;isNaN() //判斷是否為非數(shù)字;Number.isInteger() //判斷參數(shù)是不是整型; (不可省略Number);Number.isSafeInteger() //判斷參數(shù)是不是雙精度的整形;Boolean對象
Boolean() //將其他類轉(zhuǎn)換為Boolean類型, 除了(0,NaN,undefined,null,false,),其余都為真(ture);Storage 對象分為兩類( sessionStorage 和 localStorage)
sessionStorage 用來存儲(chǔ)與頁面相關(guān)的數(shù)據(jù),它在頁面關(guān)閉后無法使用。
而 localStorage 則持久存在,在頁面關(guān)閉后也可以使用;
sessionStorage&localStorage
sessionStorage對象和 cookie 相似;區(qū)別是 DOM Storage 提供了更大容量的存儲(chǔ)空間length:返回當(dāng)前存儲(chǔ)在 Storage 對象中的鍵值對數(shù)量。key(index):返回列表中第 n 個(gè)鍵的名字。Index 從 0 開始。getItem(key):返回指定鍵對應(yīng)的值。setItem(key, value):存入一個(gè)鍵值對。removeItem(key) :刪除指定的鍵值對。clear():刪除 Storage 對象中的所有鍵值對。Object 對象;
Object.assign() 將對象的地址傳送給另一個(gè)變量,(淺拷貝); 第二個(gè)傳給第一個(gè),會(huì)把第一個(gè)覆蓋調(diào);Object.create() //創(chuàng)建一個(gè)新對象并賦值(深拷貝);Object.keys() //獲取對象所有的鍵值 并返回一個(gè)數(shù)組;Object.values() //獲取對象所有的值,并返回一個(gè)數(shù)組;Object.entries() //將對象的每個(gè)鍵值對轉(zhuǎn)化成一個(gè)數(shù)組,存放在一個(gè)大數(shù)組中;Object.is() //判斷兩個(gè)對象是否一致(值類型判斷值是否一直,引用類型判斷是否指向同一塊內(nèi)存地址);Object.freeze() //凍結(jié)對象;對象的所有屬性無法進(jìn)行刪除,修改操作,只能進(jìn)行枚舉; ( 如果像對單一屬性進(jìn)行凍結(jié)操作,使用下面的definnProperty() 函數(shù));Object.isFrozen() //判斷這個(gè)對象是否被凍結(jié);Object.preventExtensions() //阻止一個(gè)對象進(jìn)行擴(kuò)展(不能給對象添加屬性,打點(diǎn)賦值不會(huì)報(bào)錯(cuò),但沒有效果.不能使用defineProperty() 給對象添加屬性,會(huì)報(bào)錯(cuò));Object.isExtensible() //判斷對象是否可以擴(kuò)展;Object.seal() //密封對象,對象可以被修改,枚舉,但是不能進(jìn)行刪除,添加;Object.isSealed() //判斷對象是被密封;delete Object.value //刪除對象的一個(gè)屬性;defineProperty() //為一個(gè)對象添加一個(gè)屬性,并且可以為屬性添加一個(gè)屬性描述:例如:屬性是否可以重寫 writeable 、是否可枚舉enmuable,set/get訪問器等參數(shù)一 //要添加屬性的對象; 參數(shù)二 //要添加的屬性名 參數(shù)三 //屬性描述對象{}下面的是參數(shù)三的配置鍵value //這個(gè)屬性的屬性值;configurable //配置一個(gè)屬性是否可以被刪除,如果值為true,該屬性可以被刪除的,如果為false該屬性不能被刪除,默認(rèn)值為falseenumerable //該屬性是否可以枚舉,是否可以通過for...in..來進(jìn)行遍歷,默認(rèn)值為false,為false的時(shí)候不能進(jìn)行枚舉,true的時(shí)候可以被枚舉;writable //配置該屬性是否可以被重寫,該屬性為true證明可以被修改,為false不能被修改,默認(rèn)值為falseset/get // set和get訪問器不能和value 和 writeable這個(gè)配置連用;set //設(shè)置屬性值 set:functioin(value){ window.HeightValue=value}; //為什么使用window.HeightValue 因?yàn)檫@里不能直接是給屬性賦值要找個(gè)變量接收下,讓下面的get方法ruturn出去; 這樣定義不嚴(yán)謹(jǐn),一般HeightValue 這個(gè)值要定義一個(gè)全局變量,在嚴(yán)格模式下,就不能夠這樣寫啦;get //獲取屬性值 get:functioin(){return HeightValue}; 注意!方法里面不能打點(diǎn)調(diào)用這個(gè)屬性,不然形成死循環(huán);forof 于forin 的區(qū)別 forof只能遍歷數(shù)組,而forin既可以遍歷數(shù)組,也可以遍歷對象; forof遍歷對象,只能使用Object.entries()方法,將對象轉(zhuǎn)換為數(shù)組這樣事半功倍,遍歷對象推薦使用forin ;Promise 對象;
promise 承諾的意思;
異步執(zhí)行:在執(zhí)行一段代碼時(shí),不影響后續(xù)代碼執(zhí)行,稱之為異步執(zhí)行,一般這個(gè)異步執(zhí)行函數(shù),都會(huì)有回調(diào)函數(shù),在代碼執(zhí)行完成之后調(diào)用此函數(shù);(不知道什么時(shí)候執(zhí)行完畢);同步執(zhí)行:代碼按照順序執(zhí)行,下局代碼要等到上句代碼執(zhí)行完畢才會(huì)執(zhí)行;(會(huì)堵塞代碼的執(zhí)行);Promise 對象,是es6新增的特性,主要解決異步執(zhí)行多層嵌套的問題(解決地獄回調(diào),倒金字塔),promise有三個(gè)狀態(tài),pending狀態(tài),創(chuàng)建promise對象的狀態(tài);resolve狀態(tài):異步執(zhí)行成功的狀態(tài),(例如請求數(shù)據(jù)成功)reject狀態(tài):異步執(zhí)行失敗的狀態(tài),(例如請求數(shù)據(jù)失敗)通過new 關(guān)鍵字創(chuàng)建一個(gè)promise對象,參數(shù)是一個(gè)回調(diào)函數(shù),回調(diào)函數(shù)可以有兩個(gè)參數(shù),resolve函數(shù)和reject()函數(shù)用來將據(jù)傳遞出去;Promise 對象一般寫在一個(gè)函數(shù)中,通過return將promise對象返回出去,配合peomise對象的api,解決地獄回調(diào);如果異步任務(wù)執(zhí)行完成,例如請求得到數(shù)據(jù)了,使用resolve();如果異步任務(wù)沒有執(zhí)行完成。例如沒有得到數(shù)據(jù),使用reject();functioin add(){ var promise=new Promise((resolve,reject)=>{resolve("成功數(shù)據(jù)");reject("失敗數(shù)據(jù)"); });return promise; }promise.then((data)=>{}) //獲取resolve()傳遞的值;promise.catch((err)=>{}) //獲取reject()傳遞的值;promise.finally(()=>{}) //不論成功與否,都會(huì)執(zhí)行;cook().then(eat).then(wash).then(data=>console.log(data)) //將回調(diào)函數(shù)替換成函數(shù)傳遞進(jìn)去然后繼續(xù)調(diào)用使用傳遞的參數(shù);在jquery 中,ajax請求后面可以直接填寫then,或者catch方法,相當(dāng)于在配置函數(shù)中使用success回調(diào)函數(shù)和error回調(diào)函數(shù);常用apiPromise.resolve("參數(shù)") //可與將promise對象轉(zhuǎn)化成成功狀態(tài);Promise.reject("參數(shù)") //將對象轉(zhuǎn)化成失敗狀態(tài);Promise.all([]) //參數(shù)是一個(gè)數(shù)據(jù),數(shù)組里面包括全部的promise實(shí)例的對象,當(dāng)全部實(shí)例對象的狀態(tài)都是成功時(shí),可以調(diào)用then方法,返回的時(shí)由所有對象傳遞的參數(shù)組成的數(shù)組,但是如果有一個(gè)對象返回失敗狀態(tài),catch方法就會(huì)返回當(dāng)前失敗對象的參數(shù);Promise.race() //競賽,數(shù)組中那個(gè)先確定狀態(tài),就返回那個(gè)對象所傳遞的值;File對象||FileReader 對象
File對象可用讓瀏覽器獲取用戶的文件的信息,還可以讀取這個(gè)文件的內(nèi)用,一般用于input type:file 和做拽事件e.dataTransfer.file 會(huì)返回一個(gè)file對象;files //input type為file的文本框都有一個(gè)屬性 ,用于返回所選文件file對象的集合(fileList);集合里面包括:name //file對象的文件名稱;type //file對象的MIME類型;size //file對象的大小;(bytes)lastModified //文件最后被修改的時(shí)間戳;FileReader 對象 文件讀取對象 FileReader對象是通過web程序異步訪問本地用戶的文件的對象(或原始數(shù)據(jù)緩沖區(qū)) (異步執(zhí)行!);創(chuàng)建 使用new關(guān)鍵字 let read=new FileReader();readAsDataURL() //使用File對象或者Blob對象傳入?yún)?shù)讀取指定的文件為DataURL;read.result ||e.target.result || this.result //獲取讀取元素的DataURL格式的文件內(nèi)容; 由于是異步執(zhí)行,在下面是獲取不到的 所以改屬性在讀取完成之后 內(nèi)容就變成了null 注意需要配合onload方法使用readAsText() //將文件讀取為文本; 參數(shù)一,讀取的文件 參數(shù)二文件編碼類型(gb2312)ArrayBuffer() //將文件轉(zhuǎn)化成ArrayBuffer 對象;abort() //中斷文件操作;事件onabort() //中斷文件時(shí)觸發(fā);onerror() //文件出錯(cuò)的時(shí)候觸發(fā);onloadstart() //文件開始的時(shí)候觸發(fā);onloadgress() //文件讀取中觸發(fā);onload() //文件讀取結(jié)束觸發(fā);onloadend //不論文件讀取成功與否,都會(huì)在文件讀取結(jié)束之后執(zhí)行;Blob 二進(jìn)制大對象
實(shí)際上File對象就是Blob更具體的一個(gè)版本,File對象繼承了Blob對象的type和size屬性,其內(nèi)部存儲(chǔ)了大量的二級制數(shù)據(jù),同樣FileReader對象也是從Bolb對象中讀取;Blob構(gòu)造函數(shù),接受兩個(gè)參數(shù)。第一個(gè)參數(shù)是一個(gè)包含實(shí)際數(shù)據(jù)的數(shù)組,第二個(gè)參數(shù)是數(shù)據(jù)的類型,這兩個(gè)參數(shù)都不是必需的。數(shù)組元素可以是任意多個(gè)的ArrayBuffer,ArrayBufferView (typed array), Blob,或者 DOMString對象。FormData 對象
用FormData對象,我們可以通過JavaScript用一些鍵值對來模擬一系列表單控件,我們還可以使用XMLHttpRequest的send()方法來異步的提交這個(gè)”表單”.比起普通的ajax,使用FormData的最大優(yōu)點(diǎn)就是我們可以異步上傳一個(gè)二進(jìn)制文件;創(chuàng)建一個(gè)FormData new FormData() //參數(shù)可以是form 參數(shù)可選,是一個(gè)HTML表單元素,可以包含任何形式的表單控件,包括文件輸入框。append() //給當(dāng)?shù)阥ormData對像添加一個(gè)鍵值對;遞歸函數(shù)
1.什么是遞歸函數(shù)
如果一個(gè)函數(shù)在內(nèi)部可以調(diào)用其本身,那么這個(gè)函數(shù)就稱為遞歸函數(shù)。
簡單理解:函數(shù)內(nèi)部自己調(diào)用自己
遞歸函數(shù)的作用其實(shí)跟循環(huán)的效果一樣
節(jié)流與防抖
防抖
// 防抖:執(zhí)行的是某個(gè)時(shí)間內(nèi)的最后一次,但在一個(gè)周期內(nèi)定時(shí)器會(huì)重建。function debounce(fn, delay) {var timer; // 維護(hù)一個(gè) timerreturn function () {var _this = this; // 取debounce執(zhí)行作用域的thisvar args = arguments;// 在等待的時(shí)間內(nèi),如果定義時(shí)器存在,會(huì)先清除定時(shí)器,再重新創(chuàng)建。if (timer) {clearTimeout(timer);}timer = setTimeout(function () {fn.apply(_this, args); // 用apply指向調(diào)用debounce的對象,相當(dāng)于_this.fn(args);}, delay);};}節(jié)流
var throttle = function(func, delay) { var timer = null; var startTime = Date.now(); return function() { var curTime = Date.now(); var remaining = delay - (curTime - startTime); var context = this; var args = arguments; clearTimeout(timer); if (remaining <= 0) { func.apply(context, args); startTime = Date.now(); } else { timer = setTimeout(func, remaining); } } } function handle() { console.log(Math.random()); } window.addEventListener('scroll', throttle(handle, 1000));方法二/ 方案:單位時(shí)間內(nèi)時(shí)間開始的時(shí)候執(zhí)行,第一次function throttle(fn, delay) {var lastTime = 0;return function () {var nowTime = Date.now();// 表示等等的時(shí)間已經(jīng)到了,重置lastTime,并且要調(diào)用fnif (nowTime - lastTime > delay) {lastTime = Date.now();fn.call(this, arguments)}}}總結(jié)
以上是生活随笔為你收集整理的javascript内置对象API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MOAC区块链助记词
- 下一篇: web网页设计与开发:基于HTML+CS