精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

你可能不知道的一些JavaScript 奇技淫巧

開發(fā) 開發(fā)工具 前端
這里記錄一下以前學習各種書籍和文章里邊出現(xiàn)的JS的小技巧,分享給大家,也供自己查閱,同時感謝那些發(fā)現(xiàn)創(chuàng)造和分享這些技巧的前輩和大牛們。

這里記錄一下以前學習各種書籍和文章里邊出現(xiàn)的JS的小技巧,分享給大家,也供自己查閱,同時感謝那些發(fā)現(xiàn)創(chuàng)造和分享這些技巧的前輩和大牛們。

[[131590]]

1、遍歷一個obj的屬性到數(shù)組

 

  1. var a=[];  
  2. for(a[a.length] in obj);  
  3. return a; 

 

  乍一看可能比較蒙,不過仔細分析還是不難理解的。常見用法是for(var key in obj),這里key初始也是undefined的,a[a.length]整體也是undefined,所以二者其實是等價的。在for循環(huán)中,obj 的屬性會依次賦值給key,同樣,也依次賦值給a[a.length],這里length一直在變,就巧妙地挨個賦值給數(shù)組的每一個元素了。

2、重復字符串(如abc=>abcabc)

 

  1. function repeat(target,n){          
  2. return (new Array(n+1).join(target));    
  3.  } 

 

  改良版本:

 

  1. function repeat(target,n){          
  2. return Array.prototype.join.call(         
  3.  {length:n+1},target);//之所以要創(chuàng)建帶length屬性的對象,是因為調用數(shù)組原型方法時,必須是一個類數(shù)組對象,而類數(shù)組對象的條件就是length為非負整數(shù) 
  4.   } 

 

  不新建數(shù)組,而是用擁有l(wèi)ength屬性的對象替代,然后調用數(shù)組的join方法,性能提升很大  

  再改進:

 

  1. var repeat=(function(){          
  2.  join=Array.prototype.join,obj={};          
  3. return function(target,n){               
  4. obj.length=n+1;               
  5. return join.call(obj,target);          }     })(); 

利用閉包將對象和join方法緩存起來,不用每次都新建對象和尋找方法

 

3、for循環(huán)中,當?shù)诙棡閒alse時會終止循環(huán),這里并不一定存在比較,可以直接賦值,如果賦值為undefined之類的值時,轉成bool值也為假,因此也會終止,比如遍歷數(shù)組可以寫成:

 

  1. for(var i=arr.length,element;element=arr[—-i];){…} 

 

  這里,第二項一定是arr[—-i]而非arr[i--],如果是后者的話,上來就是undefined,就不會執(zhí)行循環(huán)體,或者for(var i=0,element;element=arr[i++];){…}

4、NaN是JS中唯一不等于自己的值,因此可以用來判斷一個變量是否真的為NaN:a!==a

5、“<”,”+”等運算符會強制符號兩邊的表達式執(zhí)行valueOf然后比較,所以如果兩邊是函數(shù)或者對象,而又重寫了該對象的valueOf方法,就會自動執(zhí)行兩邊的方法。如:

 

  1. var a={valueOf:function(){console.log(“aaa”);}},b={valueOf:function(){console.log(“bbb”);}};    
  2. a<b;//會輸出:aaa;bbb;false; 

 

6、JS具備自動插入分號的能力,但是自動插入分號并不是***的,其有三條規(guī)則:

  1)只在”}”標記之前、一個或多個換行之后以及程序輸入的結尾被插入;

  2)分號只在隨后的輸入標記不能被解析時插入;

       這一點很重要,比如:

  1. a=b 
  2. (f()); 

       是不會在a=b之后自動插入分號的,因為a=b(f())是可以被解析的,因此像”(“,”[“,”+”,”-“,”/“開頭的時候,需要特別注意上一行可能不會自動插入。

    還有一些情況,盡管不會出現(xiàn)解析錯誤,JS仍然會強制插入分號,這就是所謂的JS語法限制產(chǎn)生式。它不允許在兩個字符間出現(xiàn)換行,最危險的就是return語句,如

    return 

    {};

    會被強制插入而成為

    return;

    {};

    類似的還有:throw語句、帶有顯示標簽的break活著continue語句、后置自增或自減運算符

  3)分號不會作為分隔符在for循環(huán)空語句的頭部被自動插入

    因此,***的辦法是在自己的js文件的最開始防御性地插入”;”,這樣在合并js文件的時候就不會出問題了。

7、閉包。理解閉包需學會三個基本事實:

(1)JS允許你引用在當前函數(shù)意外定義的變量

(2)即使外部函數(shù)已經(jīng)返回,當前函數(shù)仍然可以引用在外部函數(shù)所定義的變量。這是因為JS的函數(shù)值包含里比調用它們時執(zhí)行所需要的代碼更多的信息

(3)閉包可以更新外部變量的值。這是因為閉包存儲的是外部變量的引用而非值副本。如:

 

  1. function box(){     var val=undefined;     return {          set:function(x){val=x;},          get:function(){return val;}     };}var b=box();b.get();//“undefined” 
  2. b.set(5);b.get();//5 

 

  這一點很重要,比如在函數(shù)的for循環(huán)體內返回閉包或者有閉包取for循環(huán)的計數(shù)器值,那么這個閉包取到的永遠是for循環(huán)結束時i的最終值,因為閉包存儲的是它的引用而非當時的值副本。

8、JS沒有塊級作用域,因此通常情況下函數(shù)內部的所有變量都是綁定到函數(shù)作用域的,也就是說相當于都在函數(shù)一開始就聲明了的,一個例外就是try/catch中的變量是塊級的,只屬于try/catch塊。

9、眾所周知,在函數(shù)內部聲明函數(shù)是可以的,但是在在函數(shù)內的局部塊里聲明,可能會出現(xiàn)問題:

 

  1. function f(){return “global”;}function test(x){     function f(){return “local”}     var result=[];     if(x){          result.push(f());     }     result.push(f());     return result;}test(true);//[“local”,”local”] 
  2. test(false);//[“local”] 

 

將函數(shù)聲明到if塊中:

 

 

  1. function f(){return “global”;}function test(x){     var result=[];     if(x){          function f(){return “local”}          result.push(f());     }     result.push(f());     return result;} test(true);//? 
  2. test(false);//? 

 

 

結果會如何呢?理論上講,JS沒有塊級作用域,因此f()的作用域是整個test函數(shù),因此合理猜測應該是與上一次輸出相同,全部 為”local”,可是并不是所有的JS執(zhí)行環(huán)境都如此行事,有的會根據(jù)是否執(zhí)行包含f的代碼塊來有條件地綁定函數(shù)f(綁定即意味著將該變量綁定到其最近 的作用域,而賦值是發(fā)生在代碼實際執(zhí)行到賦值那一步的時候進行的)。

因此***的辦法是如果要聲明嵌套函數(shù),都在其富函數(shù)的最外層聲明,要么就不要聲明函數(shù),而是使用var聲明和函數(shù)表達式來實現(xiàn):

 

 

  1. function f(){return “global”;}function test(x){     var result=[];     if(x){          var g=function(){return “local”}          result.push(g());     }     result.push(f());     return result;}   

 

 

10、用js創(chuàng)建字典的時候,如果是利用對象的方式(因為JS對象的核心是一個字符串屬性名稱和屬性值的映射表),會遇到一個問題就是原型污染,因 為獲取字典屬性值的時候用hasOwnProperty還好,如果用for in遍歷的話,不僅會遍歷對象本身,包括它的原型,因此如果在其他地方污染了Object的原型,那么for in就會產(chǎn)生非預期的結果,這時可能會用hasOwnProperty來先檢測該對象本身是否含有屬性來避免原型污染,然而更極端的情況是連 hasOwnProperty這個原型方法都有可能被污染。避免原型污染的方法是在創(chuàng)建字典對象的時候用Object.create(null)來創(chuàng)建一 個完全空對象,這個對象沒有原型,這個方法是ES5的,在沒有這個方法可用的時候,***是創(chuàng)建字典類,然后在字典類里用數(shù)組來存儲有序集合,自己維護這個 集合。

11、JS中的類數(shù)組對象可以享用數(shù)組的大部分原型方法如map等,類數(shù)組對象是指滿足兩個條件的對象:一是具備合理范圍值內的length屬性, 二是length屬性大于該對象的***索引,索引是一個合理范圍的證書,它的字符串表示的是對象的一個key;但是數(shù)組的一個原型方法contact是不 能被類數(shù)組對象調用的,因此需要先用[].slice.call把類數(shù)組對象轉換為真正的數(shù)組比如[].slice.call(arguments)。

12、并不是所有時候都需要繼承,繼承也不是***的,有時候會創(chuàng)造比他能解決的更多的問題,特別是當層次關系沒那么明顯的時候,這時候應該多用結構 類型(又叫鴨子類型,如果它看起來像鴨子、游泳像鴨子并且叫聲像鴨子,那么它就是鴨子),用結構類型設計靈活的對象接口的時候,不需要創(chuàng)建類工廠來返回類 的實例,而是直接返回對象,對象具備預期的方法和屬性,比如:

  1. SomeObj.someWidget=function(opts){     return {          a:blabla,          b:function(){...},          c:blabla     }} 

 原文鏈接:http://www.cnblogs.com/dson/p/4415278.html

【編輯推薦】

 

  1. JavaScript全文搜索之相關度評分
  2. 編程語言流行榜:JavaScript 坐頭把交椅,Swift 躥升最快
  3. JavaScript中常見的字符串操作函數(shù)及用法
  4. JavaScript開發(fā)者:Win10斯巴達瀏覽器很贊
  5. JavaScript將在企業(yè)環(huán)境中引發(fā)巨大變革

 

【責任編輯:wangxueyan TEL:(010)68476606】

 

責任編輯:王雪燕 來源: 博客園
相關推薦

2015-05-07 13:13:27

JavaScript JavaScript

2021-02-16 09:02:59

Python代碼技巧

2021-07-05 05:34:10

Typescript語言開發(fā)

2022-04-24 16:00:15

LinuxLinux命令ls命令

2021-11-01 12:10:56

Python技巧代碼

2012-11-23 10:57:44

Shell

2020-05-09 08:48:21

JavaScript原生方法代碼

2019-11-20 10:25:06

sudoLinux

2015-08-13 09:03:14

調試技巧

2021-01-05 11:22:58

Python字符串代碼

2020-01-29 19:40:36

Python美好,一直在身邊Line

2023-02-27 09:20:24

絕對定位CSS

2023-01-29 09:46:47

Dialog彈窗模態(tài)

2017-11-07 21:58:25

前端JavaScript調試技巧

2020-11-03 09:51:04

JavaScript開發(fā) 技巧

2019-11-25 14:05:47

Python裝飾器數(shù)據(jù)

2014-12-08 10:39:15

2021-07-12 07:59:06

安全 HTML 屬性

2025-03-19 09:46:45

2024-09-11 16:21:09

點贊
收藏

51CTO技術棧公眾號

国产区亚洲区欧美区| 日韩欧美一区在线| 亚洲视频在线观看日本a| 国产精品无码久久av| 国产精品99免费看| 日韩精品在线免费播放| 最新天堂中文在线| 精灵使的剑舞无删减版在线观看| 久久综合狠狠综合| 亚洲综合av影视| 九九热在线免费观看| 最新国产精品| 国产一区二区三区网站| 99免费观看视频| 国内自拍亚洲| 福利一区福利二区微拍刺激| 天天做天天爱天天高潮| 男人的天堂在线| 国产激情视频一区二区在线观看| 国产精品99一区| 国产亚洲成人精品| 国产精品x453.com| 亚洲视频电影图片偷拍一区| 欧美一级片在线免费观看| 日韩一区二区三区在线免费观看| 亚洲一区二区在线视频| 亚洲啪啪av| 欧美少妇另类| 不卡一卡二卡三乱码免费网站| 国产欧美久久一区二区| 亚洲 欧美 中文字幕| 激情久久五月| 欧美乱人伦中文字幕在线| 性少妇xx生活| 精品国产午夜| 亚洲一区二区久久| 中文字幕人妻一区二区| 国产精品极品| 欧美mv日韩mv国产网站| 欧美视频亚洲图片| 伦一区二区三区中文字幕v亚洲| 欧美性极品少妇精品网站| 在线无限看免费粉色视频| lutube成人福利在线观看| 久久亚洲春色中文字幕久久久| 国产精品一区二区免费看| 亚洲第一免费视频| 国产精品亚洲第一| 91手机在线播放| 国产成人精品a视频| 国产在线一区观看| 亚洲精品免费av| 国产日韩免费视频| 国产大片一区二区| 99超碰麻豆| 精品国产av 无码一区二区三区| 国产一区视频网站| 69堂成人精品视频免费| 草逼视频免费看| 丰满放荡岳乱妇91ww| 国产福利久久| 色欲av永久无码精品无码蜜桃| 99免费精品在线观看| 免费日韩av电影| 国产视频二区在线观看| 亚洲国产高清在线观看视频| 中文字幕人成一区| 宅男网站在线免费观看| 亚洲高清一区二区三区| 日韩在线一级片| 日韩成人影音| 69堂国产成人免费视频| 国产亚洲色婷婷久久| 午夜视频一区二区在线观看| 亚洲第五色综合网| 成人免费网站黄| 亚洲澳门在线| 97视频com| 在线观看亚洲黄色| 国产一区二区三区香蕉| 国产精品一区二区三区不卡| 男男电影完整版在线观看| 国产精品久久夜| 国产成人艳妇aa视频在线| 欧美大胆a人体大胆做受| 日韩欧美在线视频观看| 日本人视频jizz页码69| 日本精品视频| 亚洲色图av在线| 国产女人被狂躁到高潮小说| 国产精品综合| 91视频国产一区| 天堂av在线免费观看| 国产精品进线69影院| 国产曰肥老太婆无遮挡| 成人在线观看免费视频| 亚洲成人999| 国产又粗又猛又爽又黄的视频小说| 欧美激情亚洲| 国产精品极品尤物在线观看 | 色天使色偷偷av一区二区| 亚洲欧美日韩三级| 色先锋久久影院av| 美女视频久久黄| 天干夜夜爽爽日日日日| 国产成人av一区二区三区在线观看| 明星裸体视频一区二区| av电影高清在线观看| 91国在线观看| 天堂www中文在线资源| 国产精品成人a在线观看| 国产91精品久久久久久| www.av在线.com| 国产精品福利一区| 欧美一级片中文字幕| 午夜日韩影院| 久久精品福利视频| 久久久久久av无码免费看大片| 成人精品鲁一区一区二区| 国产免费色视频| 欧亚一区二区| 亚洲欧美激情在线视频| 国产精品第72页| 国产精品一品视频| 中国一级大黄大黄大色毛片| 国产综合av| 亚洲欧美福利视频| 欧美精品亚洲精品日韩精品| 国产大陆精品国产| 99热这里只有精品7| 99热播精品免费| 亚洲美女自拍视频| 天天综合网入口| 成年人网站91| 国产视频一视频二| 好吊妞国产欧美日韩免费观看网站| 久热精品视频在线免费观看| 中文字幕乱码人妻无码久久| 久久久久99精品国产片| 精品国产免费av| 日韩精品社区| 欧美亚洲国产成人精品| 深夜福利视频一区| 欧美日韩中文字幕综合视频| 朝桐光av一区二区三区| 99国产精品久久久久久久成人热| 国产综合色一区二区三区| 丁香花电影在线观看完整版| 欧美精品一区二区三区视频| 久久久久久久久久久久久久久久久 | 香蕉视频免费在线看| 精品国产31久久久久久| 女同性恋一区二区三区| 亚洲欧美卡通另类91av| 欧美久久久久久| 欧亚一区二区| 久久精品中文字幕| www.天天干.com| 亚洲一级二级三级在线免费观看| 国产伦精品一区二区三区88av| 亚洲精品色图| 欧美日韩一区在线视频| jvid一区二区三区| 久久久精品久久久久| 北条麻妃一二三区| 动漫精品一区二区| 国产性猛交xx乱| 国产自产v一区二区三区c| 黄色一级大片免费| 日韩系列在线| 国产欧美一区二区三区视频| www视频在线免费观看| 精品久久久久av影院| 国产性猛交╳xxx乱大交| 久久久美女毛片| 国产永久免费网站| 亚洲精品偷拍| 一区二区三区偷拍| aaa国产精品| 国产成人在线一区二区| 国产午夜精品久久久久免费视| 精品欧美黑人一区二区三区| av片免费观看| 亚洲精品欧美专区| 免费黄色在线视频| 国产在线日韩欧美| 欧美成人一区二区在线观看| 久久婷婷蜜乳一本欲蜜臀| 成人资源视频网站免费| 超碰aⅴ人人做人人爽欧美| xxxxx91麻豆| 五月婷婷伊人网| 欧美日韩黄视频| 国产女同在线观看| 亚洲猫色日本管| 亚洲精品乱码久久久久久久久久久久| 久草中文综合在线| 日本www在线播放| 在线看片不卡| 日韩欧美手机在线| 91大神精品| 成人h片在线播放免费网站| 日本а中文在线天堂| 久久亚洲春色中文字幕| 免费人成黄页在线观看忧物| 欧美电影精品一区二区| 中文字幕第2页| 欧美日韩一区二区在线播放| 国产高潮流白浆| 国产日韩精品一区| 亚洲精品国产成人av在线| 久久99久久99精品免视看婷婷| 男人天堂999| 亚洲久色影视| 一本—道久久a久久精品蜜桃| 久久不见久久见免费视频7| 国产精品精品软件视频| a一区二区三区亚洲| 国产精品福利网站| 成人爱爱网址| 午夜精品一区二区三区视频免费看| 成人免费网址| 一区二区三区视频免费在线观看| 头脑特工队2免费完整版在线观看| 欧美一级视频精品观看| 国产又粗又猛又爽| 欧美日韩精品一区二区三区四区| 69亚洲精品久久久蜜桃小说 | 国产日韩成人精品| 蜜桃av免费看| 久久久久国色av免费看影院| 一起草在线视频| 成人福利视频在线| 久草视频福利在线| 成人性生交大合| 男人的天堂免费| 国产不卡免费视频| 亚洲一区和二区| 成人精品视频一区二区三区 | 国产福利第一页| 91精品国产综合久久精品app| 欧美高清69hd| 欧美日韩国产bt| 一级特黄aaaaaa大片| 欧美日本在线视频| 国产美女三级无套内谢| 欧美一区二区三区日韩视频| 99久久精品免费看国产交换| 91精品国产综合久久久蜜臀粉嫩| 国产精品久久久久久久免费看| 欧美二区在线观看| 亚洲国产一二三区| 亚洲国产中文字幕在线观看| 日韩一区二区三区在线观看视频| 精品动漫一区二区三区在线观看| 色婷婷av一区二区三区之e本道| 亚洲精品国产福利| 福利成人在线观看| 精品国内亚洲在观看18黄 | 国产探花在线精品| 一区视频二区视频| 狠狠88综合久久久久综合网| 久久男人资源站| 国产农村妇女精品一区二区| 免费男同深夜夜行网站 | 国产日韩欧美中文在线播放| 天天综合在线观看| 成人国产1314www色视频| 秋霞影院一区二区三区| 视频一区二区综合| 欧美国产高潮xxxx1819| 阿v天堂2017| 日韩1区2区日韩1区2区| 日本网站在线看| 成人国产精品免费观看视频| 亚欧洲乱码视频| 亚洲丝袜另类动漫二区| 日本在线观看中文字幕| 欧美性生交xxxxxdddd| 91黄色在线视频| 亚洲第一区第二区| av播放在线观看| 久久久久久国产精品| av成人在线播放| 亚洲av综合色区| 精品中文字幕一区二区三区| 不卡一区二区三区四区五区| 日韩高清影视在线观看| 色婷婷精品国产一区二区三区| 希岛爱理一区二区三区| 欧美大片在线播放| 美女视频网站黄色亚洲| 欧美丰满熟妇bbb久久久| 国产午夜精品久久久久久免费视| 一区二区三区四区五区| 欧美日韩激情网| 国产精品久久久久久免费| 亚洲福利视频久久| 秋霞午夜在线观看| 国产91|九色| 我要色综合中文字幕| 日本一区高清不卡| 91久久综合| 美女被艹视频网站| 中文字幕不卡一区| 国产精品男女视频| 日韩三级中文字幕| 色网站免费在线观看| 97超碰国产精品女人人人爽| 精品999日本久久久影院| 欧美主播一区二区三区美女 久久精品人| 中文字幕一区二区三区乱码图片| 午夜视频在线瓜伦| av在线这里只有精品| 性欧美videos| 欧美日韩免费一区二区三区视频| 艳母动漫在线看| 国语自产精品视频在线看一大j8 | 国产精品伦子伦免费视频| 国内精品偷拍| 日韩欧美猛交xxxxx无码| 国内精品伊人久久久久av一坑| 免费看91的网站| 色视频一区二区| 日韩porn| 日本高清不卡在线| 日韩精品免费一区二区三区竹菊| 国产情侣第一页| 国产xxx精品视频大全| 精品国产乱码久久久久久鸭王1 | 韩国av在线免费观看| 欧美超级免费视 在线| 懂色av色香蕉一区二区蜜桃| 一区二区三区四区五区视频| 人人超碰91尤物精品国产| 久久亚洲AV无码专区成人国产| 日韩欧美国产黄色| 三区在线视频| 国产91色在线|| 国产探花一区二区| 亚洲最大综合网| 国产精品久久久久影视| 中文字幕男人天堂| 精品国模在线视频| 精品中文字幕一区二区三区四区| www.18av.com| 国产黑丝在线一区二区三区| 久草视频在线资源| 精品国产网站在线观看| 国产传媒在线| 日本一区二区在线视频| 麻豆成人在线观看| 91高清免费看| 亚洲福利视频在线| 日韩不卡视频在线观看| 亚洲一区二区三区免费观看| 激情欧美日韩一区二区| 久久久久无码精品国产| 亚洲成人久久网| 亚洲一二三四| 一区二区三区四区五区精品| 国产一区不卡在线| 日本熟妇毛耸耸xxxxxx| 日韩成人激情视频| 成人在线免费| 高清无码视频直接看| 亚洲精品动态| 97国产精品免费视频| 久久精品九色| 欧美 日本 亚洲| 欧美国产乱子伦| 99久久精品无免国产免费| 国色天香2019中文字幕在线观看| 美女毛片一区二区三区四区| 中文字幕亚洲乱码| 亚洲主播在线观看| 黄视频在线观看免费| 成人h视频在线观看播放| 亚洲欧洲午夜| 黄色av片三级三级三级免费看| 日韩欧美中文一区二区| 在线免费日韩片| 路边理发店露脸熟妇泻火| 91视频.com| 99视频免费看| 日本精品久久久久久久| 午夜欧美视频| 非洲一级黄色片| 日韩你懂的电影在线观看| 少妇视频一区| 一二三四中文字幕| 久久久不卡网国产精品二区| 国产男男gay网站| 欧美在线性爱视频| 午夜精品国产| 国产精品美女高潮无套| 亚洲高清不卡av| 国产精品亚洲四区在线观看| 日韩久久一级片| 亚洲一区影音先锋|