JavaScript À´ÁË
1995Ä꣬µ®ÉúÁËJavaScriptÓïÑÔ£¬ÄÇÒ»Ä꣬ÎÒ¸Õ¸Õ´Ó´óѧ±ÏÒµ¡£ÔÚ½ñÄêRedMonk ÍÆ³öµÄ2017
ÄêµÚÒ»¼¾¶È±à³ÌÓïÑÔÅÅÐаñÖУ¬JavaScript ÅŵÚÒ»£¬Java µÚ¶þ£¬Python ·´³¬ PHP
ÅŵÚÈý£¬PHP µÚËÄ£¬C# ºÍ C++ ²¢ÁеÚÎå¡£RedMonk ÅÅÃûµÄÖ÷ÒªÒÀ¾ÉÊǸ÷ÖÖ±à³ÌÓïÑÔÔÚ Stack
Overflow ºÍ GitHub ÉϵıíÏÖ£¬±ÈÈç±à³ÌÓïÑÔÔÚ Stack Overflow ÉϵÄÌÖÂÛÊýÁ¿£¬ÔÚ
GitHub ÉϵĴúÂëÁ¿µÈ¡£¾¡¹ÜÓÐÒ»¶¨µÄÆ¬ÃæÐÔ£¬»¹ÊÇ˵Ã÷ÁËJavaScript Ó¦ÓõĹ㷺ÐÔ¡£´ÓȫջµÄ½Ç¶È¿´£¬Javascript
ÊDZر¸µÄÒ»ÖÖ±à³ÌÓïÑÔ¡£

ECMAScript ºÍ JavaScript µÄ¹ØÏµ
JavaScript µ®ÉúÓÚNetscape£¬µ«ÊÇÔÚ1996Ä꣬΢Èí·¢²¼ÁËÓëJavaScript
¼æÈݵÄJScript£¬Ãæ¶Ô¼æÈݺͷ¢Õ¹µÄÐèÒª£¬Íø¾°¹«Ë¾µÄÏÈÏÍÃÇŬÁ¦¼ÓÈëÁË ECMA International
±ê×¼»¯×éÖ¯£¬ÖÂÁ¦ÓÚJavaScript µÄ±ê×¼»¯£¬ÃüÃûΪECMAScript¡£ºóÀ´£¬ÓÉÓÚÀúÊ·µÄÔÒò£¬
JavaScript±ê×¼µÄ¿ª·¢Ö÷Ìå±ä³ÉÁËMozila»ù½ð»á¡£¹ØÓÚECMAScript µÄ×îа汾¿ÉÒÔ²ÎÔÄ
https://tc39.github.io/ecma262/¡£
¼òµ¥µØ£¬ECMAScript ÊÇJavaScriptÓïÑԵıê×¼¹æ·¶£¬¾ÍÏñC++µÄ±ê×¼Ïà¶ÔÓÚC++ÓïÑÔÄÇÑù¡£
JavaScript ÊÇÔõÑùµÄÓïÑÔ
ÔÚmozilla ¿ª·¢ÕßÍøÕ¾ÉÏÊÇÕâÑùÃèÊöJavaScriptµÄ£º
JavaScript (JS) is a lightweight interpreted or JIT-compiled
programming language with first-class functions.
Òâ˼ÊÇ˵JavaScript ÊÇÒ»¸öÇáÁ¿¼¶½âÊÍ»ò¼´Ê±±àÒëµÄº¯ÊýʽÓïÑÔ£¬ÀïÃæÓкܶàµÄ¸ÅÄÇáÁ¿¡¢½âÊÍ¡¢±àÒë¡¢¼´Ê±±àÒë¡¢º¯Êýʽ¡£ÔÚÀÏÂëÅ©¿´À´£¬¼òµ¥Æð¼û£¬Àí½âΪÀ©Õ¹ÓïÑÔ½ÏΪ·½±ã¡£
Ò»°ãµÄ±à³ÌÓïÑÔ¶¼ÓÐ×Å×Ô¼ºÏà¶Ô¶ÀÁ¢µÄÖ´Ðл·¾³£¬µ«ÊÇJavaScriptµÄÖ´Ðл·¾³ÒÀÀµÔÚËÞÖ÷»·¾³ÖУ¬ËÞÖ÷»·¾³ÓÈÆäÊǿͻ§¶ËµÄËÞÖ÷»·¾³ÌṩÁ˸ü¶àͳһµÄ»·¾³±äÁ¿£¬±ÈÈçä¯ÀÀÆ÷ÖеÄwindow£¬documentµÈ¡£Êµ¼ÊÉÏ£¬JavaScript
ºÍDOM Êǿɷֵ쬶ÔÓÚ²»Í¬µÄÔËÐл·¾³£¬ÓÐ×Ų»Í¬µÄÄÚÖÃËÞÖ÷¶ÔÏó¡£JavaScript×÷ΪÀ©Õ¹ÓïÑÔÔÚÄÚÖõÄËÞÖ÷»·¾³ÖÐÔËÐУ¬È«¾Ö¶ÔÏóÔÚ³ÌÐòÆô¶¯Ç°¾ÍÒѾ´æÔÚÁË¡£
JavaScriptµÄʱ¿Õ»ù´¡
´Ó¿Õ¼ä¹ÛµÄ½Ç¶È¿´£¬JavaScript°üÀ¨Êý¾Ý½á¹¹£¬²Ù×÷·û£¬Óï¾äÓë±í´ïʽ£¬º¯Êý£»´Óʱ¼äµÄ½Ç¶È¿´£¬°üÀ¨×÷ÓÃÓò£¬´¦Àí·½Ê½£¬Ä£¿éÓë¿â¡£¹ØÓÚ¼¼ÊõϵͳµÄʱ¿Õ¹Û£¬¿ÉÒԲμû¡¶ÃæÏòȫջµÄ¼¼Êõ¹ÜÀí¡·Ò»ÎÄ¡£
Êý¾Ý½á¹¹
JavaScript Öаüº¬µÄÁùÖÖ»ù±¾ÀàÐÍ£º
Boolean
Null
Undefined
Number
String
Symbol (ECMAScript 6)
ÆäËüÈ«ÊǶÔÏó¡£ÖµÊÇÓÐÀàÐ͵쬱äÁ¿ÊÇûÓÐÀàÐ͵ģ¬ÀàÐͶ¨ÒåÁËÖµµÄÐÐÎªÌØÕ÷£¬±äÁ¿ÔÚûÓгÖÓÐÖµµÄʱºòÊÇundefined¡£
JavaScript¶ÔÖµºÍÒýÓõĸ³Öµ£¯´«µÝÔÚÓï·¨ÉÏûÓÐÇø±ð£¬ÍêÈ«¸ù¾ÝÖµµÄÀàÐÍÀ´Åж¨¡£
¶ÔÓÚ¶ÔÏóµÄÊôÐԺͷ½·¨¶øÑÔ£¬È«¾Ö±äÁ¿ºÍÈ«¾Öº¯ÊýÊÇÈ«¾Ö¶ÔÏóµÄÊôÐÔ£¬È«¾Ö¶ÔÏóÏ൱ÓÚËÞÖ÷¶ÔÏóµÄ¸ù¶ÔÏó¡£ÐèҪעÒâÊÇÊôÐÔµÄÊôÐÔÖÐÄÇЩ²»¿É±ä¶ÔÏóµÄʵÏÖ·½Ê½£º
¶ÔÏó³£Á¿£º ½áºÏwritableºÍconfigurable:false ¿ÉÒÔ´´½¨Ò»¸öÕæÕýµÄ³£Á¿ÊôÐÔ
½ûÖ¹À©ÕÅ£ºObject.preventExtensions(..)À´½ûÖ¹Ò»¸ö¶ÔÏóÌí¼ÓÐÂÊôÐÔ²¢±£ÁôÒÑÓÐÊôÐÔ
Ãܷ⣺ ÔÚ Object.seal(..) ºó²»ÄÜÔö£¬É¾£¬¸Ä ¸ÃÊôÐÔ
¶³½á£º Object.freeze(..) »á½ûÖ¹¶ÔÓÚ¶ÔÏó±¾Éí¼°ÈÎÒâÖ±½ÓÊôÐÔµÄÐÞ¸Ä
Êý¾ÝÀàÐ͵ÄÅж¨¿ÉÒÔͨ¹ý contructor£¬instanceof£¬ isPrototypeOfµÈ·½·¨ÊµÏÖ£¬¶ÔÓÚѼ×ÓÀàÐ͵ÄÅж¨»¹¿ÉÒÔʹÓÃ
in µÄÏà¹Ø²Ù×÷¡£·ûºÅ²¢·Ç¶ÔÏ󣬶øÊÇÒ»ÖÖ¼òµ¥±êÁ¿»ù±¾ÀàÐÍ¡£
JavaScript ÖеÄÇ¿ÖÆÀàÐÍת»»×ÜÊÇ·µ»Ø»ù±¾ÀàÐÍÖµ£¬½«¶ÔÏóÇ¿ÖÆ×ª»»ÎªString ÊÇͨ¹ýToPrimitive³éÏó²Ù×÷Íê³ÉµÄ£¬¶øtoJSON£¨£©ÊÇ·µ»ØÒ»¸öÄܹ»±»×Ö·û´®»¯µÄ°²È«µÄJSONÖµ¡£
²Ù×÷·û
²Ù×÷·ûÊǿռäÔªËØÁ¬½ÓµÄŦ´øÖ®Ò»£¬JavaScript²Ù×÷·û°üÀ¨ËãÊõ£¬Á¬½Ó£¬ÏàµÈ£¬±È½Ï£¬Âß¼£¬Î»£¬ÀàÐÍÅжϣ¬Ìõ¼þ£¬new£¬delete£¬
void£¬"£¬", ".", "[]"µÈ¡£
ÔÚJavaScriptÖÐÒÔ²Ù×÷·û½øÐвÙ×÷ÍùÍù¶¼¸½´ø×ÅÀàÐÍת»»¡£
Ò»ÔªÔËËã·û+ ÊÇÏÔÊ½Ç¿ÖÆÀàÐÍת»»£¬¶ø¡«ÊÇÏÈת»»Îª32λÊý×Ö£¬È»ºó°´Î»·´×ª¡£|| ºÍ&&
¸üÓ¦¸ÃËãÊÇÑ¡ÔñÆ÷ÔËËã·û£¬Æä·µ»ØÖµ²»Ò»¶¨ÊDz¼¶ûÖµ£¬¶øÊÇÁ½¸ö²Ù×÷ÊýÆäÖеÄÒ»¸öÖµ¡£Ò»°ãÏȶԵÚÒ»¸ö²Ù×÷Êý½øÐÐtoBooleanÇ¿ÖÆÀàÐÍת»»£¬È»ºóÔÙÖ´ÐÐÌõ¼þÅжϡ£ÀýÈ磺a||b
Àí½â³Éa£¿a£ºb ¸üͨËס£¶Ô&& ¶øÑÔ£¬Èç¹ûµÚÒ»¸öÊÇÕæÖµ£¬Ôò°ÑµÚ¶þ¸ö×÷Ϊ·µ»ØÖµ£¬a&&b
Àí½â³Éa?b:a ¡£
== ºÍ=== ¶¼»á¶Ô²Ù×÷Êý½øÐÐÀàÐͼì²é£¬²¢Ö´ÐÐÒþÐÔÀàÐÍת»»£¬ÐèҪעÒâµÄÊÇ£º
Èç¹ûÁ½±ßµÄÖµÖÐÓÐtrue»òfalse£¬Ç§Íò²»ÒªÊ¹ÓÃ==
Èç¹ûÁ½±ßÓÐ[],¡±¡±»òÕß0£¬¾¡Á¿²»ÒªÊ¹ÓÃ==
ÕâÀïÊÇGithubÉϹØÓÚ¸÷ÖÖÏàµÈÐԵľØÕó£º

Óï¾äÓë±í´ïʽ
²Ù×÷·ûÓë±äÁ¿£¯³£Á¿µÈÁ¬½ÓÐγÉÁËÓï¾äºÍ±í´ïʽ£¬ÀýÈç±í´ïʽa+1ÖеÄnull ±»Ç¿ÖÆ×ª»»Îª0¡£ Óï¾ä°üÀ¨ÉùÃ÷Óë¿é£¬¿ØÖÆÓï¾äÓÐÅжϣ¬Ñ»·£¬break£¬continue£¬return£¬Òì³£µÈ¡£Ã¿¸öÓï¾ä¶¼ÓÐÒ»¸ö½á¹ûÖµ£¬ÄÄÅÂÊÇundefined¡£
ÕýÔò±í´ïʽÊǷdz£ÖØÒªµÄÒ»Àà±í´ïʽ£¬Ö÷ҪʹÓÃRegExpÀִ࣬Ðз½·¨testЧÂʸߣ¬exec »áµÃµ½Ò»¸ö½á¹û¶ÔÏóµÄÊý×é¡£
¶ººÅÔËËã·û¿ÉÒ԰Ѷà¸ö¶ÀÁ¢µÄ±í´ïʽ´®Áª³ÉÒ»¸öÓï¾ä£¬{ }ÔÚ²»Í¬Çé¿öϵÄÒâ˼²»¾¡Ïàͬ£¬×÷ΪÓï¾ä¿é£¬{
..} ºÍfor£¯whileÑ»·ÒÔ¼°ifÌõ¼þÓï¾äÖдúÂë¿éµÄ×÷Óûù±¾Ïàͬ¡£{a,b} ʵ¼ÊÉÏÊÇ{a:a,b:b}µÄ¼ò»¯°æ±¾¡£
try..catch..finally ÖУ¬Èç¹ûfinallyÖÐÅ׳öÒì³££¬º¯Êý»áÔÚ´Ë´¦ÖÕÖ¹¡£ÐèҪעÒâµÄÊÇ£¬Èç¹û´ËǰtryÖÐÒѾÓÐreturnÉèÖÃÁË·µ»ØÖµ£¬Ôò¸ÃÖµ»á±»¶ªÆú¡£finallyÖеÄreturnÒ²»á¸²¸ÇtryºÍcatchÖеÄreturnµÄ·µ»ØÖµ¡£
º¯ÊýÓë×÷ÓÃÓò
º¯Êý¾ÍÊǾßÓÐÔËËãÂß¼µÄ¶ÔÏó£¬ÄäÃûº¯Êý²»ÀûÓÚµ÷ÊÔ£¬»Øµ÷º¯ÊýÊÇÒ»ÖÖ¿ØÖÆ·´×ª¡£ËùÓеĺ¯Êý£¨¶ÔÏ󣩶¼¾ßÓÐÃûΪprototypeµÄÊôÐÔ£¬prototypeÊôÐÔÒýÓõĶÔÏóÊÇprototype¶ÔÏó£»ËùÓеĶÔÏ󶼺¬ÓÐÒ»¸öÒþʽÁ´½Ó£¬ÓÃÒÔÖ¸ÏòÔÚ¶ÔÏóÉú³É¹ý³ÌÖÐËùʹÓõĹ¹Ô캯ÊýµÄprototype¶ÔÏó¡£
ÄäÃûº¯ÊýûÓÐname ±êʶ·û£¬¾ßÓÐÈçÏÂȱÏÝ£º
´úÂë¸üÄÑÀí½â
µ÷ÊÔÕ»¸üÄÑ×·×Ù
×ÔÎÒÒýÓ㨵ݹ飬ʼþ£¨½â³ý£©°ó¶¨£¬µÈ£©¸üÄÑ
Èç¹ûfunctionÊÇÉùÃ÷µÄµÚÒ»¸ö´Ê£¬ÄǾÍÊǺ¯ÊýÉùÃ÷£¬·ñÔò¾ÍÊǺ¯Êý±í´ïʽ¡£Á¢¼´Ö´Ðк¯Êý±í´ïʽÐÎÈ磺£¨function
¡)( )
ʱ¿ÕÃܲ»¿É·Ö£¬×÷ÓÃÓòÊÇʱ¿ÕÁ¬½ÓµÄŦ´øÖ®Ò»¡£×÷ÓÃÓò°üÀ¨È«¾Ö£¬º¯Êý£¬¿é¼¶×÷ÓÃÓò¡£×÷ÓÃÓòÊǸù¾ÝÃû³Æ²éÕÒ±äÁ¿µÄÒ»Ì×¹æÔò£¬±éÀúǶÌ××÷ÓÃÓòÁ´µÄ¹æÔò¼òµ¥£ºÒýÇæ´Óµ±Ç°Ö´ÐÐ×÷ÓÃÓòÖð¼¶ÏòÉϲéÕÒ¡£±Õ°ü¿ÉÒÔÀí½âΪ¾ßÓÐ״̬µÄº¯Êý¡£
º¯Êý×÷ÓÃÓòÖ¸ÊôÓÚÕâ¸öº¯ÊýµÄÈ«²¿±äÁ¿¶¼¿ÉÒÔÔÚÕû¸öº¯ÊýµÄ·¶Î§ÄÚʹÓûò¸´Ó᣿é×÷ÓÃÓòÐÎÈç with£¬ try£¯catch£¬
ES6 ÒýÈëÁËlet£¬constµÈ¡£
¶¯Ì¬×÷ÓÃÓò²¢²»¹ØÐĺ¯ÊýºÍ×÷ÓÃÓòÊÇÈçºÎÉùÃ÷ÒÔ¼°Ôںδ¦ÉùÃ÷µÄ£¬Ö»¹ØÐÄËüÃǴӺ䦵÷Óõġ£´Ê·¨×÷ÓÃÓòÊǶ¨ÒåÔÚ´Ê·¨·ÖÎö½×¶ÎµÄ×÷ÓÃÓò£¬´Ê·¨×÷ÓÃÓò²éÕÒ»áÔÚµÚÒ»¸öÆ¥ÅäµÄ±êʶ·ûʱֹͣ¡£×÷ÓÃÓòÁ´ÊÇ»ùÓÚµ÷ÓÃÕ»µÄ£¬¶ø²»ÊÇ´úÂëÖеÄ×÷ÓÃÓòǶÌס£ReferenceError
ÊÇÓë×÷ÓÃÓòÅбðʧ°ÜÏà¹Ø£¬¶øTypeErrorÔòÊÇ×÷ÓÃÓòÅбð³É¹¦£¬µ«ÊǶԽá¹ûµÄ²Ù×÷·Ç·¨»ò²»ºÏÀí¡£
this ÌṩÁËÒ»ÖÖÓÅÑÅ·½Ê½À´Òþʽ¡°´«µÝ¡±Ò»¸ö¶ÔÏóÒýÓᣠthis ¼´Ã»ÓÐÖ¸Ïòº¯ÊýµÄ×ÔÉí£¬Ò²Ã»ÓÐÖ¸Ïòº¯ÊýµÄ×÷ÓÃÓò£¬ÊÇÔÚº¯Êý±»µ÷ÓÃʱ·¢ÉúµÄ°ó¶¨£¬ËüÖ¸ÏòʲôÍêȫȡ¾öÓÚº¯ÊýÔÚÄÄÀï±»µ÷Óá£Èç¹û·ÖÎöthis°ó¶¨µÄ»°£¬¿ÉÒÔʹÓõ÷ÊÔ¹¤¾ßµÃµ½µ÷ÓÃÕ»£¬È»ºóÕÒµ½Õ»Öеĵڶþ¸öÔªËØ£¬¾ÍÊÇÕæÕýµÄµ÷ÓÃλÖá£
this µÄ°ó¶¨¹æÔòÓУº
ĬÈϰ󶨣º¶ÀÁ¢µÄº¯Êýµ÷Óã¬Ñϸñģʽ²»Äܽ«È«¾Ö¶ÔÏóÓÃÓÚĬÈϰó¶¨
Òþʽ°ó¶¨£º°Ñº¯Êýµ÷ÓÃÖеÄthis °ó¶¨µ½º¯ÊýÒýÓÃÖеÄÉÏÏÂÎĶÔÏó
ÏÔʽ°ó¶¨£ºÍ¨¹ýcall£¨£©ºÍapply£¨£©·½·¨¿ÉÒÔÖ±½ÓÖ¸¶¨thisµÄ°ó¶¨¶ÔÏ󡣯äÖУ¬Ó²°ó¶¨ÊÇÒ»ÖÖÏÔʽµÄÇ¿ÖÆ°ó¶¨£¬ES5ÖÐÌṩÁËÄÚÖ÷½·¨Function.prototype.bind,
APIÖе÷ÓõÄÉÏÏÂÎĺÍbindµÄ×÷ÓÃÒ»Ñù¡£
new °ó¶¨£¬¹¹Ô캯ÊýÖ»ÊÇһЩʹÓÃnew²Ù×÷·ûµ÷Óõĺ¯£¬ ʹÓÃnew À´µ÷Óú¯ÊýµÄ²Ù×÷¹ý³Ì´óÖÂÈçÏÂ:
´´½¨Ò»¸öȫеĶÔÏó
Õâ¸öжÔÏó»á±»Ö´ÐÐ[[Prototype]]Á´½Ó
Õâ¸öжÔÏó»á°ó¶¨µ½º¯Êýµ÷ÓõÄthis
Èç¹ûº¯ÊýûÓзµ»ØÆäËû¶ÔÏó£¬ÄÇônew±í´ïʽÖеĺ¯Êýµ÷Óûá×Ô¶¯·µ»ØÕâ¸öжÔÏó
Èç¹ûͬʱ´æÔÚ¶àÖְ󶨣¬ÄÇô°ó¶¨µÄÓÅÏȼ¶´óÖÂÈçÏ£º
ÓÉnewµ÷Óð󶨵½Ð´´½¨µÄ¶ÔÏó
ÓÉcall »òÕßapply£¨»òbind£©µ÷Óð󶨵½Ö¸¶¨µÄ¶ÔÏó
ÓÉÉÏÏÂÎĶÔÏóµ÷Óð󶨵½ÄǸöÉÏÏÂÎĶÔÏó
ĬÈÏÔÚÔÚÑϸñģʽϰ󶨵½undefined£¬·ñÔò°ó¶¨µ½È«¾Ö¶ÔÏó
¸ü°²È«µØÊ¹ÓÃthis °ó¶¨µÄ×ö·¨ÊÇ´«ÈëÒ»¸öÌØÊâµÄ¶ÔÏ󣬰Ñthis °ó¶¨µ½Õâ¸ö¶ÔÏó¡£ÐèҪעÒâµÄÊÇ£¬¼ýÍ·º¯Êý²»Ê¹ÓÃthisµÄ4ÖÖ¹æÔò£¬¶øÊǸù¾ÝÍâ²ã£¨º¯Êý»òÈ«¾Ö£©×÷ÓÃÓòÀ´¾ö¶¨this¡£
»¹Òª×¢ÒâÒ»µã£¬eval ºÍ with »áµ¼ÖÂ×÷ÓÃÓò±ä»¯¶øÒýÆðÐÔÄÜϽµ£¬¾¡Á¿²»ÒªÊ¹Óá£eval£¨£©
º¯ÊýÖеÄ×Ö·û´®ÊÇ´úÂ룬ÓÃÀ´Ö´Ðж¯Ì¬´´½¨µÄ´úÂ룬ÑϸñģʽÓÐ×Ô¼ºµÄ×÷ÓÃÓò£¬»¹´æÔÚ°²È«Òþ»¼£»with ÊÇÖØ¸´ÒýÓÃÒ»¸ö¶ÔÏóÖеĶà¸öÊôÐԵĿì½Ý·½Ê½£¬Í¨¹ý½«Ò»¸ö¶ÔÏóµÄÒýÓõ±×÷×÷ÓÃÓòÀ´´¦Àí£¬»á¸Ä±ä×÷ÓÃÓò·¶Î§¡£
´¦ÀíºÍÖ´Ðз½Ê½
JavaScriptÒýÇæ±¾ÉíûÓÐʱ¼ä¸ÅÄֻÊÇÒ»¸ö°´ÐèÖ´ÐÐÈÎÒâ´úÂëÆ¬¶ÎµÄ»·¾³£¬Ê¼þµ÷¶È×ÜÊÇÓɰüº¬ËüµÄËÞÖ÷»·¾³À´Ö´ÐС£Ò»µ©ÓÐʼþÐèÒªÔËÐУ¬Ê¼þÑ»·¶ÓÁоͻáÔËÐУ¬Ö±µ½¶ÓÁÐÇå¿Õ£¬Óû§½»»¥¡¢IOºÍ¶¨Ê±Æ÷µÈʼþÔ´»áÏòʼþ¶ÓÁмÓÈëʼþ¡£
ÓÉÓÚJavaScriptµÄµ¥Ïß³ÌÌØÐÔ£¬ºÜ¶àº¯ÊýµÄ´úÂë¾ßÓÐÔ×ÓÐÔ¡£
»Øµ÷º¯Êý·â×°Á˳ÌÐòµÄÑÓÐøÐÔ£¬³£¼ûÉè¼ÆÊÇ·ÖÀë»Øµ÷£¨Ò»¸öÓÃÓڳɹ¦Í¨Öª£¬Ò»¸öÓÃÓÚ³ö´í֪ͨ£©¡£ÁíÒ»Öֻص÷ģʽÊÇ¡°error-first¡±£¬¿ÉÄÜÊܵ½·ÀÓùʽ±à³ÌµÄÓ°Ï죬NodeJS
API ²ÉÓÃÁË´ËÀàµÄ·ç¸ñ£¬Èç¹û³É¹¦µÄ»°£¬Õâ¸ö²ÎÊý¾Í»á±»Çå¿Õ¡£ÐèҪעÒâµÄÊÇ£¬»Øµ÷º¯ÊýµÄǶÌ×ÍùÍù³ÆÎª»Øµ÷µØÓü¡£
DeferredÊÇÒ»ÖÖ½«Òì²½´¦Àí´®ÁªÊéд²¢Ö´ÐеĻúÖÆ£¬Deferred¶ÔÏóÊÇÒ»ÖÖ¾ßÓÐunresolved,resolved,rejected
ÖÐijһÖÖ״̬µÄ¶ÔÏó¡£DeferredÄÚ²¿»úÖÆÊÇÏÈ×¢²á»Øµ÷º¯Êý£¬Deferred¶ÔÏó״̬·¢Éú±ä»¯Ê±Ö´Ðиú¯Êý£¬ÊÇÒ»ÖÖÌá¸ß´úÂë¿É¶ÁÐԵĻúÖÆ¡£
Deferred¶ÔÏóµÄ×´Ì¬Ç¨ÒÆÖ»ÄÜ·¢ÉúÒ»´Î£¬ÒÔthen(),done(),fail(),always(),pipe()Ö¸¶¨ºóÐøº¯ÊýµÄ·½·¨£¬Í¨¹ýwhen£¨£©À´²¢Ðд¦Àí£¬½«Deferred
¶ÔÏóÖеÄÒ»²¿·Ö·½·¨É¾³ýºóµÃµ½ÊÇPromise¶ÔÏ󣬶Ô״̬µÄ¹ÜÀíÓÉ×î³õ´´½¨¸ÃDeferred¶ÔÏóµÄËùÓÐÕßÀ´Ö´ÐС£
Promise ·â×°ÁËÒÀÀµÓÚʱ¼äµÄ״̬£¬´Ó¶øÊ¹µÃ±¾ÉíÓëʱ¼äÎ޹أ¬Promise ¿ÉÒÔ°´ÕÕ¿ÉÔ¤²âµÄ·½Ê½½øÐУ¬¶ø²»ÓùØÐÄʱÐò»òµ×²ãµÄ½á¹û¡£Ò»µ©Promise¾öÒéÍê³É£¬¾Í³ÉΪÁ˲»±äÖµ£¬¿ÉÒÔ°²È«µØ°ÉÕâ¸öÖµ´«µÝ¸øµÚÈý·½£¬²¢È·±£²»»á¸Ä±ä¡£
Promise ÊÇÒ»ÖÖÔÚÒì²½ÈÎÎñÖÐ×÷ΪÁ½¸ö»ò¸ü¶à²½ÖèµÄÁ÷³Ì¿ØÖÆ»úÖÆ£¬Ê±ÐòÉϵÄthis-then-that¡£
²»½ö±í´ïÁ˶ಽÒì²½ÐòÁеÄÁ÷³Ì¿ØÖÆ£¬»¹ÊÇÒ»¸ö´ÓÒ»¸ö²½Öèµ½ÏÂÒ»¸ö²½Öè´«µÝÏûÏ¢µÄÏûϢͨµÀ¡£Ê¼þ¼àÌý¶ÔÏó¿ÉÒÔµ±³ÉÊǶÔpromise
µÄÒ»ÖÖÄ£Ä⣬¶Ô¿ØÖÆ·´×ªµÄ»Ö¸´ÊµÏÖÁ˸üºÃµÄ¹Ø×¢µã·ÖÀë¡£
ÅжÏÊÇ·ñÊÇPromise ÖµµÄʾÀý´úÂëÈçÏ£º
if£¨
p !==null &&
( typeof p ===¡°object¡± || typeof p ===¡°function¡±)
&& typeof p.then===¡°function¡±)
{
console.log(¡°thenable¡±);
}
else{
console.log(¡°not thenable¡±);
} |
Éú³ÉÆ÷ÊÇÒ»ÀàÌØÊâµÄº¯Êý£¬¿ÉÒÔÒ»´Î»ò¶à´ÎÆô¶¯ºÍÍ£Ö¹£¬²¢²»·ÇµÄÒ»¶¨ÒªÍê³É£¬Éú³ÉÆ÷°Ñwhile true
´ø»ØÁËJavascriptµÄÊÀ½ç¡£ÆäÖУ¬yield ίÍеÄÖ÷ҪĿµÄÊÇ´úÂë×éÖ¯£¬ÒÔ´ïµ½ÓëÆÕͨº¯Êýµ÷ÓõĶԳơ£´ÓÉú³ÉÆ÷yield³öÒ»¸öPromise£¬
²¢ÇÒÈÃÕâ¸öPromise ͨ¹ýÒ»¸ö¸¨Öúº¯Êý»Ö¸´Õâ¸öÉú³ÉÆ÷£¬ÕâÊÇͨ¹ýÉú³ÉÆ÷¹ÜÀíÒì²½µÄºÃ·½·¨Ö®Ò»¡£
ÐèҪעÒâµÄÊÇ£¬Èç¹ûÔÚPromise.all([..]) Öд«Èë¿ÕÊý×飬»áÁ¢¼´Íê³É£¬ ¶øPromise.race([..])
Ôò»á¹Òס¡£ ÔÚ¸÷ÖÖPromise¿âÖУ¬finally £¨ .. ) »¹Êǻᴴ½¨²¢·µ»ØÒ»¸öÐÂPromiseµÄ¡£
Ä£¿éÓë¿â
Ä£¿éºÍ¿âÊÇJavaScript ʱ¿ÕÖеÄÁíһŦ´ø£¬Ìá¸ßÁË´úÂëµÄ¸´ÓÃÐԺͿª·¢Ð§ÂÊ¡£
Ä£¿é³ä·ÖÀûÓÃÁ˱հüµÄÇ¿´óÄÜÁ¦£¬´ÓÄ£¿éÖзµ»ØÒ»¸öʵ¼ÊµÄ¶ÔÏó²¢²»ÊDZØÐëµÄ£¬Ò²¿ÉÒÔÖ±½Ó·µ»ØÒ»¸öÄÚ²¿º¯Êý£¬ÀýÈ磺jQauery
ºÍ $±êʶ·û¾ÍÊÇjQuery Ä£¿éµÄ¹«¹²API¡£
Ä£¿éÓÐÁ½¸ö±ØÒªÌõ¼þ£º
±ØÐëÓÐÍⲿµÄ·â±Õº¯Êý£¬¸Ãº¯Êý±ØÐëÖÁÉÙ±»µ÷ÓÃÒ»´Î
·â±Õº¯Êý±ØÐë·µ»ØÖÁÉÙÒ»¸öÄÚ²¿º¯Êý£¬ÕâÑùÄÚ²¿º¯Êý²ÅÄÜÔÚ˽ÓÐ×÷ÓÃÓòÖÐÐγɱհü£¬²¢ÇÒ¿ÉÒÔ·ÃÎÊ»òÐÞ¸Ä˽ÓеÄ״̬
import ¿ÉÒÔ½«Ò»¸öÄ£¿éµÄÒ»¸ö»ò¶à¸öAPIµ¼Èëµ½µ±Ç°×÷ÓÃÓòÖУ¬²¢·Ö±ð°ó¶¨ÔÚÒ»¸ö±äÁ¿ÉÏ£»module
Ôò½«Õû¸öÄ£¿éµÄAPI µ¼Èë²¢°ó¶¨µ½Ò»¸ö±äÁ¿ÉÏ£¬ export ½«µ±Ç°Ä£¿éµÄÒ»¸ö±êʶ·ûµ¼³öΪ¹«¹²API¡£
´ó¶àÊýÄ£¿éËùÒÀÀµµÄ¼ÓÔØÆ÷£¯¹ÜÀíÆ÷±¾ÖÊÉÏÊǽ«ÕâÖÖÄ£¿é¶¨Òå·â×°½øÒ»¸öAPI¡£»ùÓÚº¯ÊýµÄÄ£¿é²¢²»ÊÇÒ»¸öÄܱ»¾²Ì¬Ê¶±ðµÄģʽ£¨±àÒëÆ÷£©£¬API¶¨ÒåÖ»ÓÐÔÚÔËÐÐʱ¿¼ÂǽøÀ´¡£µ«ÊÇES6
Ä£¿éµÄAPI ÊǾ²Ì¬µÄ£¬±ØÐë±»¶¨ÒåÔÚ¶ÀÁ¢µÄÎļþÖС£
JavaScript ÖÐµÄ¿âºÆÈçÑ̺££¬ÕâÀï½ö¶ÔJQuery×ö¼òҪ˵Ã÷¡£JQueryѹËõºó´óÔ¼31k£¬ÇáÇÉÁé»î£¬Í¨¹ýÁ´Ê½Ó﷨ʵÏÖÂß¼¹¦ÄÜ£¬Í¨¹ýCSS3Ñ¡ÔñÆ÷¼°×Ô¶¨ÒåÑ¡ÔñÆ÷»ñÈ¡ÔªËØ£¬Ö§³Ö²å¼þ£¬¿ÉÀ©Õ¹ÐԸߡ£
JQueryÖÐ µÄÌØÉ«º¯Êý¡ª¡ª$ £¬¿ÉÒÔ³éÈ¡ÓëÑ¡ÔñÆ÷Æ¥ÅäµÄÔªËØ£¬»òÕß´´½¨ÐµÄDOMÔªËØ£¬½«ÒÑÓеÄDOMÔªËØ×ª»»ÎªjQuery¶ÔÏ󣬶ÔDOM¹¹ÔìÍê³ÉºóµÄʼþ¼àÌýÆ÷½øÐÐÉ趨µÈµÈ¡£JQuery
¶ÔDOM£¬Ñùʽ£¬AJAX ¾ù¿ÉÓÐЧ´¦Àí¡£
ͨ¹ýÀ©Õ¹JQuery.fn ¾Í¿ÉÒÔ´´½¨JQueryµÄ²å¼þ£¬ code.google.com/apis/libraries
¸ø³öÁ˺ܶàJQuery µÄ²å¼þÐÅÏ¢¡£
ÀûÓÃJavaScript µÄʱ¿Õ¹Û£¬¿ÉÒÔ¶ÔÕâÒ»ÓïÑÔÓÐһЩ»ù±¾µÄÊáÀí¡£¾ÍÓïÑÔ±¾Éí¶øÑÔ£¬¹Ø¼ü×ÖÊDz»Äܻرܵ쬶ÔJavaScript
¹Ø¼ü×Ö£¬ÔÚStackOverFlowÖÐÓÐÈ˸ø³öÁËÈçÏÂʫһÑùµÄ×ܽ᣺
Let this long
package float£¬
Goto private class if short¡£
While protected with debug case£¬
Continue volatile interface¡£
Instanceof super synchronized throw£¬
Extends final export throws.
Try import double enum?
-False, boolean, abstract function.
Implements typeof transient break!
Void static,default do,
Switch int native new,
else, delete null public var,
In return for const, true, char,
¡¡ finally catch byte. |
¿Í»§¶ËÓ¦ÓÃ
Ò»ÃÅÓïÑÔËù±»Ê¹ÓõĹ㷺³Ì¶ÈÈ¡¾öÓÚʹÓõij¡¾°£¬ÕýÈçPHP±»¹ã·º²ÉÓÃÄÇÑù£¬»¥ÁªÍøÓ¦Óò»½öÊÇJavaScript
µÄ¼ÒÏ磬¶øÇÒÊÇËü´óÕ¹ÉíÊÖµÄ×îÖØÒª³¡Ëù£¬Ã»ÓÐJavaScript µÄWebÓ¦Óü¸ºõ¾ø¼£ÁË¡£
webÓ¦ÓÃÖÐʹÓÃJavaScriptÓÐÍÏ×§²Ù×÷£¬Òì²½¶ÁÈ¡£¬¼üÅÌ·ÃÎÊ ºÍ¶¯»Ð§¹ûµÈ»ù±¾¹¦ÄÜ¡£¶ÔÓÚÇåÎúµØÊ¹ÓÃJavaScriptʵÏÖWebÓ¦ÓöøÑÔ£¬Àí½âä¯ÀÀÆ÷ÍøÒ³´¦Àí¹ý³ÌÊDZØÒªµÄ¡£Ò»°ãµØ£¬ä¯ÀÀÆ÷ÏÈ·ÖÎöHTML£¬È»ºó¹¹ÔìDOMÊ÷£¬ÔÙÔØÈëÍⲿJavascript
ÎļþÒÔ¼°CSSÎļþ£¬½ÓÏÂÀ´ÔØÈëͼÏñÎļþµÈÍⲿ×ÊÔ´£¬×îºóÔÚ·ÖÎöJavascriptºó¿ªÊ¼Ö´ÐÐÖÁÈ«²¿Íê³É¡£
ÔÚHTMLÖмÓÔØJavaScriptµÄ·½Ê½ÓжàÖÖ£º
<script> ±êÇ©£¬ÔÚbody ½áÊø±êǩǰд
¶ÁÈ¡ÍⲿJavaScript Îļþ£¬¶ÁÈ¡Íê¾Í¿ªÊ¼Ö´ÐУ¬ä¯ÀÀÆ÷¿ÉÒÔ»º´æ
onload ʼþ¼ÓÔØ
DOMContentLoadedÊÇÔÚÍê³ÉHTML½âÎöºó·¢ÉúµÄʼþ£¬Ò²¿ÉÒÔÓÃÓÚ¼ÓÔØJavaScript
¶¯Ì¬ÔØÈ룬ÕâÑùJSÔÚÔØÈëʱ²»»á×è¶ÏÆäËû²Ù×÷,Èç
var script = document.createElement(¡®script¡¯);
script.src = ¡®my-javascript.js¡¯£»
document.getElementsByTagName(¡®head¡¯)[0].appendChild(script) |
window¶ÔÏóÊÇJavaScriptËùÄܲÙ×÷µÄ×î¸ß²ã¶ÔÏ󣬯äÖеÄÊôÐÔ°üÀ¨navigator£¬location£¬history£¬screen£¬frames£¬document£¬parent£¬top£¬self
µÈ¡£
DOM ÊÇÒ»ÖÖAPI£¬Íê³É¶ÔHTML£¯XML µÄÊ÷Ðνṹ·ÃÎÊ£¬Èç±êÇ©£¬ÔªËØ£¬½ÚµãµÈ¡£½Úµã¿ÉÒÔͨ¹ýID£¬±êÇ©Ãû£¬Ãû³ÆºÍÀàÃû½øÐмìË÷£¬ÀýÈ磺
var element
= document.getElementById(¡°abel¡±)
var allelements = document.getElementByTagName(¡®*¡¯)
|
ÓÉÓÚ·µ»ØµÄÊÇNodeList¶ÔÏó£¬ÐÔÄܽϲ¿ÉÒÔͨ¹ý var array
= Array.prototye.slice.call (allelements)ת»»Îªarray ºó´¦Àí¡£½ÚµãµÄ·ÃÎÊ¿ÉÒÔͨ¹ýXPath
½øÐÐÁé»îµÄ·ÃÎÊ£¬µ±È»£¬Selector API ±ÈXPath¸ü¼òµ¥ÇÒͬÑùÁé»î£¬ÀýÈ磺
var a_label
= document.querySelector(¡®#abel¡¯)
var b_all = document.querySelectorAll(¡®div¡¯) |
Èç¹ûÏÈÐÞ¸ÄDocumentFragment£¬ÔÙ¶Ôʵ¼ÊµÄdocument¶ÔÏó²Ù×÷£¬DOM µÄ²Ù×÷ÐÔÄÜ»á½Ï¸ßһЩ¡£
ʼþÕìÌýÆ÷µÄÉ趨¿ÉÒÔÖÆ¶¨HTMLÔªËØµÄÊôÐÔ£¬Ò²¿ÉÒÔÖ¸¶¨DOMÔªËØµÄÊôÐÔ£¬»¹¿ÉÒÔͨ¹ýEventTarget.addEventListenser()½øÐÐÖ¸¶¨¡£Ê¼þµÄ´¦Àí°üÀ¨²¶»ñ£¬Ä¿±ê´¦ÀíºÍʼþðÅÝÈý¸ö½×¶Î£¬²¶»ñµÄ¹ý³ÌÊÇ£º
window ->
document -> html -> body -> div ->
button |
È»ºó´¦ÀíÆ÷Ö´ÐÐ,ðÅÝÏòÉÏ´«²¥µÄ¹ý³ÌÊDZéÀúDOMÊ÷£¬ÐèҪעÒâµÄÊÇ focus ²»»áðÅÝ¡£
DOM2Öеıê׼ʼþÓÐHTMLEvent£¬MouseEvent£¬UIEventºÍMutationEvent¡£DOM3
ÖеÄʼþ¸ü¶à£ºUIEvent£¬FocusEvent£¬MouseEvent£¬ WheelEvent£¬
TextEvent£¬KeyboardEvent ºÍcompositionEventµÈ£¬»¹¿ÉÒÔͨdocument.createEventÀ´×Ô¶¨Òåʼþ¡£
ͨ¹ýJavaScript ¶ÔCSSÑùʽ±ä¸üµÄ·½·¨ÓÐͨ¹ýclassName ÊôÐÔ±ä¸üclassÃû£¬Í¨¹ýclassListÊôÐÔ¸ü¸ÄclassÃû£¨ÆäÖÐclassList
ÊÇH5¶ÔDOM TokenList½Ó¿ÚµÄʵÏÖ£©£¬»¹¿ÉÒÔ¸ü¸ÄStyle ÊôÐÔ»òÕßÖ±½Ó¸ü¸ÄÑùʽ±í¡£Í¨¹ýJavaScript¿ÉÒÔ¶ÔÆÁĻλÖã¨screenX£¬screenY£©£¬´°¿ÚλÖã¨clientX£¬clientY£©£¬Îĵµ×ø±ê£¨pageX£¬pageY£¬ÓÉä¯ÀÀÆ÷×ÔÐÐʵÏֵģ©£¬Ìض¨ÔªËØÄÚµÄÏà¶ÔλÖã¨layerX£¬layerY
»òoffsetX offsetY£©½øÐÐÐ޸ġ£Í¨¹ýJavaScript¿ÉÒÔ¶Ô±íµ¥ÖеÄÔªËØ£¬¿Ø¼þºÍÄÚÈݽøÐÐÑéÖ¤£¬¿ÉÓÃÓÚÑéÖ¤µÄʼþÓÐsubmit£¬focus£¬blur£¬change£¬keydown/up/press£¬input¡£Ê¹ÓÃ±íµ¥¶ø²»²úÉúÒ³ÃæÌø×ªµÄ·½Ê½¿ÉÒÔÊÇÖ¸Ïòµ½Ò»¸ö
£¨0,0 £©µÄ¿Õiframe¡£
¶ÔÓÚ¶¯»¶øÑÔ£¬cssµÄ¶¯»ÐÔÄÜÒ»°ãÒª¸üºÃһЩ¡£
AJAX ÔÚWebÓ¦ÓÃÖÐÊDz»¿É»òȱµÄ£¬¼òµ¥µØËµ£¬ÊÇÒ»ÖÖ²»·¢ÉúÒ³ÃæÌø×ª¾ÍÄÜÒì²½ÔØÈëÄÚÈݲ¢¸ÄÐ´Ò³ÃæÄÚÈݵļ¼Êõ£¬Ö÷Ҫͨ¹ý
XMLHttpRequest ¶ÔÏóµÄ´´½¨£¬ÊµÏÖͨ£¯Ò첽ͨÐÅ£¬´¦Àí³¬Ê±ºÍÏìÓ¦¡£AJAXÓÐ×Å¿çÔ´ÏÞÖÆ£¬ÊµÏÖ¿çԴͨÐŵķ½Ê½ÓУºJSONP£¬iframe
hack£¬window.postMessage() ÒÔ¼° XMLHttpRequest Level
2¡£
HTML5+CSS3+JavaScriptµÄ×ÛºÏʹÓòſÉÄܳɾÍÒ»¸öWebÓ¦Óá£H5ÖÐµÄ History
API ʹÓÃÁËwindowÊôÐÔµÄhistory¶ÔÏó¼àÌýpopstateʼþ£¬ÓÃÓÚ»Ö¸´Ò³Ãæ×´Ì¬µÄ´¦Àí¡£ApplicationCache
ÔÚhtml±êÇ©µÄmanifest ÊôÐÔÖÐÖ¸¶¨ÁË»º´æÇåµ¥ÎļþµÄ·¾¶£¬±ØÐëͨ¹ýtext/cache-manifest
ÕâÒ»MIME type À´·¢²¼»º´æÇåµ¥Îļþ£¬×¢ÒâÇåµ¥ÖеÄCACHE£¬NETWORK£¬ºÍFALLBACK
µÄÇø·Ö¡£
ͨ¹ýnavigator.onLine ¿ÉÒÔ»ñÖªÍøÂç״̬£¬»¹¿ÉÒÔͨ¹ýonline/offlineʼþÀ´ÕìÌýÁ¬½Ó״̬µÄÇл»Ê±»ú¡£online/offlineʼþÊÇdocument.body
´¥·¢µÄ£¬²¢´«¸ødocument¶ÔÏóºÍwindow¶ÔÏó¡£
<p> network
is : <span id = ¡°indicator¡±> (state unknown)
</span> </p>
<script>
{
function updateIndicator = document.getElementById(¡®indicator¡¯);
indicator.textContext = navigator.online?¡¯online¡¯:¡¯offline¡¯;
}
document.body.onload = updateIndicator;
document.body.ononline= updateIndicator;
document.body.onoffline = updateIndicator;
</script> |
DataTransfer ÊÇDrag Drop API µÄºËÐÄ£¬ÔÚËùÓÐÍÏקʼþµÄʼþ¶ÔÏóÖУ¬¶¼ÓиÃÊôÐÔ£¬Ö÷ÒªÊǽÓÊÕÊý¾Ý¡£ÍÏ×§Îļþ´Óä¯ÀÀÆ÷±£´æµ½×ÀÃæ£ºevent.dataTransfer.setData(¡®DownloadURL¡¯,¡¯MIMETYPE:
Îļþurl¡¯£©ÀýÈ磺
<a href=¡°http://a.b.c/abel.pdf¡±
data-downloadurl = ¡°application/pdf:abel.pdf: http://a.b.c/abel.pdf¡±
class=¡°dragout¡± draggable = ¡°true¡±>download
</a> <script>
var files = document .querySelectorAll (¡®.dragout¡¯);
for (var i = 0, file; file =files[i];i++) {
file.addEventListener (¡®dragstart¡¯, function(event){
event.dataTransfer.setData (¡°DownloadURL¡±, this.dataset.downloadurl);
},false);
} </script> |
FileAPI ͨ¹ýFileReader ¶ÁÈ¡Îļþ£¬Ò²¿ÉÒÔ¶ÁÈ¡dataURL£¬FileReaderSync
ÓÃÓÚͬ²½¶ÁÈ¡ÎļþÄÚÈÝ£¬¿ÉÒÔÔÚWeb Worker ÖÐʹÓá£
Web Storage ΪËùÓÐÔ´¹²Ïí5M¿Õ¼ä£¬localStorage ºÍsessionStorage
µÄÇø±ðÔÚÓÚÊý¾ÝµÄÉúÃüÖÜÆÚ¡£cookie ×î´ó4k£¬·¢ÇëÇóʱһÆð·¢ËÍ£¬±£´æ»á»°µÈÖØÒªÐÅÏ¢¡£indexedDB
¿ÉÒÔ¹éΪÎĵµÐÍÊý¾Ý¿â, ×÷Ϊ¿Í»§¶Ë´æ´¢ÓÖһѡÔñ¡£
var indexdb = window.indexDB || window.webkitIndexedDB ||window.mozIndexedDB;
Web worker ÊÇH5 µÄÐÂÌØÐÔ£¬ÊÇËÞÖ÷»·¾³£¨ä¯ÀÀÆ÷£©µÄ¹¦ÄÜ£¬JavaScript ±¾ÉíÊDz»Ö§³Ö¶àÏ̵߳ġ£×¨ÓõÄworker
Óë´´½¨ËüµÄ³ÌÐòÖ®¼äÊÇÒ»¶ÔÒ»µÄ¹ØÏµ¡£
Web worker ÄÜÔÚÁíÍâµÄÏß³ÌÖд´½¨ÐµÄJavascript ÔËÐл·¾³£¬Ê¹JavaScripts¿ÉÒÔÔÚºǫ́´¦Àí¡£Ö÷Ï̺߳͹¤×÷Ï̷߳ÖÀ룬ÎÞ·¨Ê¹ÓöԷ½»·¾³µÄ±äÁ¿¡£¹¤×÷Ïß³ÌÎÞ·¨ÒýÓÃdocument¶ÔÏó£¬ÐèҪͨ¹ýÏûÏ¢ÊÕ·¢Íê³ÉÊý¾Ý´«µÝ¡£
ÔÚÖ÷Ï̴߳´½¨¹¤×÷Ị̈߳¬´óÔ¼Ïòvar worker = new Worker(¡®work.js¡¯)ÕâÑù
ÔÚÖ÷Ïß³ÌÖÐÍ£Ö¹workerµÄ·½Ê½ÊÇworker.terminate(); worker ×ÔÉíÍ£Ö¹µÄ·½Ê½ÊÇ
self.close();worker ÖÐ ¿ÉÒÔͨ¸ö importScripts ·½·¨£¬ÔÚ¹¤×÷Ïß³ÌÄÚ¶ÁÈ¡ÍⲿµÄÎļþ¡£
Á˽âÁËÕâЩ»ù´¡·½Ê½ºÍ·½·¨£¬½ö½öÊÇWebÓ¦ÓÃÖÐJavaScript¿ª·¢µÄµÚÒ»²½°É¡£
·þÎñ¶ËÓ¦ÓÃ
¼¼Êõϵͳ×ÜÊÇÓÖ×ÅÏò³¬ÏµÍ³½ø»¯µÄÇ÷ÊÆ£¬JavaScript Ò²²»ÀýÍâ¡£
JavaScript Ó¦ÓÃÓÚ·þÎñ¶ËµÄ¿ª·¢Ô´ÓÚ2009Äê³õ³öÏÖµÄCommonJS£¬ºóÀ´³ÉΪΪÁË·þÎñÆ÷¶ËjavaScriptµÄ¹æ·¶¡£»ùÓÚJavaScriptûÓÐÄ£¿éϵͳ¡¢±ê×¼¿â½ÏÉÙ¡¢È±·¦°ü¹ÜÀí¹¤¾ßµÈÏÖ×´£¬CommonJS¹æ·¶Ï£ÍûJavaScript¿ÉÒÔÔÚÈκεط½ÔËÐУ¬ÒÔ´ïµ½Java¡¢C#¡¢PHPÕâЩºǫ́ÓïÑԾ߱¸¿ª·¢´óÐÍÓ¦ÓõÄÄÜÁ¦¡£CommonJSÊÇÒ»ÖÖ˼Ï룬ËüµÄÖÕ¼«Ä¿±êÊÇʹӦÓóÌÐò¿ª·¢Õ߸ù¾ÝCommonJS
API±àдµÄJavaScriptÓ¦ÓÿÉÒÔÔÚ²»Í¬µÄJavaScript½âÎöÆ÷ºÍHOST»·¾³ÉÏÔËÐУ¬ÀýÈç±àд·þÎñ¶ËÓ¦Óã¬ÃüÁîÐй¤¾ß£¬»ùÓÚGUIµÄ×ÀÃæÓ¦ÓúͻìºÏÓ¦Óñà³ÌµÈ£¬ÏêÇé²Î¼Ó
www.commonjs.org ¡£
NodeJS¿ÉÒÔÀí½â³ÉCommonJS¹æ·¶µÄÒ»ÖÖʵÏÖ£¬¶øÇÒÊDz¿·ÖʵÏÖ¡£NodeJSÒÔV8×÷ΪJavaScriptµÄʵÏÖÒýÇæ£¬Í¨ÓõÄÒì²½´¦ÀíʼþÑ»·£¬ÌṩÁËһϵÁзÇ×èÈûº¯Êý¿âÀ´Ö§³Öʵ¼ùÑ»·ÌØÐÔ¡£Í¬Ê±£¬NodeJSÌṩÁ˸߶ÈÓÅ»¯µÄÓ¦Óÿ⣬À´Ìá¸ß·þÎñÆ÷ЧÂÊ£¬ÀýÈçÆähttp
Ä£¿éÊÇΪ¿ìËÙ·Ç×èÈûʽhttp·þÎñ¶øÓÃCÓïÑÔÖØÐ´µÄ¡£ÁíÍ⣬NodeJS»¹ÓÐshellµÄÃüÁîÐй¤¾ß£¬Í¨¹ý°üϵͳʵÏÖÀ©Õ¹£¬À©Õ¹Áбí¿ÉÒÔÏêÇé²Î¼û£º
GitHub.com/node/wiki/modules¡£
JavaScript ÖеÄÖ÷ҪʵÏÖÒýÇæ°üÀ¨£ºIE²ÉÓõÄJScript£¬Firefox²ÉÓõÄSpiderMoneky£¬Chrome
²ÉÓõÄV8£¬Safari²ÉÓõÄwebkitÖÐµÄ javacriptcoreµÆ¡£Èç¹ûÒª¶ÔÒýÇæÓнøÒ»²½µÄÁ˽⣬¿ÉÒÔÑжÁÒ»ÏÂjavascriptcoreµÈÏà¹ØµÄÔ´´úÂë¡£
V8 ÊÇNodeJS ÖеĺËÐÄÒýÇæ£¬NodeJSµÄϵͳ¼Ü¹¹´óÖÂÈçÏ£º

Óëä¯ÀÀÆ÷Ïà¶ÔÓ¦£¬Node ÖеÄÈ«¾Ö±äÁ¿¿ÉÒÔͨ¹ý Object.keys(global); »ñµÃ£¬ ¿´Ò»¿´NodeJSÖеÄ
¡°hello world¡± ³ÌÐò£º
var http = require('http');
http.createServer(function (req,res){
res.writeHead(200,{'Content-type':'text/plain'});
res.end('Hello Node.js \n');
}).listen(1234,"127.0.0.1");
console.log('Server running on http://127.0.0.1:1234/'); |
¼¸ÐдúÂë¾ÍʵÏÖÒ»¸ö¼òµ¥web server£¬ ʹPythoner ÃÇÁªÏëµ½ÁË Tornado£¬ ËüÃǶ¼×ßÔÚµ¥Ïß³ÌÒì²½IOµÄ·ÉÏ¡£
NodeJS ÌṩÁ˶Ôhttps µÄÖ§³Ö£¬¿ÉÒÔͨ¹ýopenssl Éú³ÉÖ¤ÊéµÄ·½Ê½´óÖÂÊÇ£º
openssl req
-new -x509 -keyout key.pen -out cert.perm |
ʹÓÃÖ¤ÊéµÄʾÀýÈçÏ£º
var fs =require(¡®fs¡¯);
var options = {
key: fs.readFileSync(¡®key.perm¡¯);
cert:fs.readFileSync(¡®cert.perm¡¯);
} |
NodeJSÖ§³Ösocket ºÍÎļþ´¦Àí£¬ÅäºÏϵͳÀ©Õ¹¿ÉÒÔʹÓø÷ÖÖÄ£°æÓïÑÔ¡£»ùÓÚNodeJSµÄʵ¼ÊÔÚÒµ½ç·Ç³£¹ã·º£¬±ÈÈçÃæÏòwebsocketµÄIMϵͳ£¬¸÷ÖÖwebÓ¦ÓÃÍøÕ¾µÈµÈ¡£
¼øÓÚ΢·þÎñ¼Ü¹¹µÄÐËÆð£¬Ò²µ®ÉúÁË»ùÓÚNodeµÄ΢·þÎñ¼Ü¹¹¡ª¡ªSeneca£¬ËüʹÓÃÍ걸µÄģʽƥÅä½Ó¿ÚÀ´Á¬½Ó¸÷¸ö·þÎñ£¬´Ó´úÂëÖн«Êý¾Ý´«Êä³éÏó³öÀ´£¬Ê¹±àд¾ßÓиßÀ©Õ¹ÐÔµÄÈí¼þ±äµÃÏ൱ÈÝÒס£Seneca
ûÓÐʹÓÃÒÀÀµ×¢È룬µ«ÊÇÔÚ´¦Àí¿ØÖÆ·´×ªÉÏÏ൱Áé»î£¬Ã»Óйؼü×ÖºÍÇ¿ÖÆµÄ×ֶΣ¬Ö»ÐèÒ»×é¼üÖµ¶Ô£¬ÓÃÓÚģʽƥÅäµÄÒýÇæÖС£¾ßÌå²Î¿¼ÊµÏÖ£¬¿ÉÒԲο¼¡¶Node.js
΢·þÎñ¡·Ò»Êé¡£
»ùÓÚJavaScriptµÄȫջ
Èç¹ûÔÚÕû¸öÓ¦ÓÃϵͳÖÐÖ÷ҪʹÓÃJavaScript±à³ÌÓïÑÔ×÷Ϊ¼¼ÊõÕ»£¬ÄÇôҲ¿ÉÒÔ³ÉΪ»ùÓÚJavaScript
µÄȫջ£¬¹ØÓÚȫջµÄÂÛÊö¿ÉÒԲμӡ¶È«Õ»µÄ¼¼ÊõÕ»ÉèÏë¡·ºÍ¡¶ÔÙ̸< ȫջ¼Ü¹¹Ê¦>¡·Á½ÆªÎÄ×Ö¡£ÀýÈçMEAN¼Ü¹¹£¬¼´MongoDB
+ Express + Angular + Node£¬MEAN ¼¼ÊõÕ»´ú±í×ÅÒ»ÖÖÍêÈ«ÏÖ´úµÄ Web
¿ª·¢·½·¨£ºÒ»ÖÖÓïÑÔÔËÐÐÔÚÓ¦ÓóÌÐòµÄËùÓвã´ÎÉÏ£¬´Ó¿Í»§¶Ëµ½·þÎñÆ÷£¬ÔÙµ½³Ö¾Ã²ã¡£½èÖúJavaScriptµÄ²âÊÔ¿ò¼Ü£¬±ÈÈçMochaJS¡¢JasmineJS
ºÍ KarmaJS£¬¿ÉÒÔΪ×Ô¼ºµÄ MEAN Ó¦ÓóÌÐò±àдÉîÈë¶øÓÖÈ«ÃæµÄ²âÊÔÌ×¼þ£¬¾Ý˵MEANÓÐÈ¡´úLAMP£¯LNMPµÄµÄÇ÷ÊÆ£¬µ«»¹Ðè±£³Ö½÷É÷¡£
ÒýÇæµÄ²îÒì
ÕýÏñJava ÄÇÑù£¬¾¡¹ÜÓÖ×ÅÐéÄâ»ú¹æ·¶£¬µ«¸÷¸öJVMµÄʵÏÖ»¹ÊÇÓÐ×ÅЩÐíµÄ²»Í¬£¬JavaScript
Ò²ÊÇÈç´Ë¡£JavaScript¸÷ÒýÇæÖÐͬÑù´æÔÚ×ÅÉÙÁ¿µÄÏÞÖÆ£¬ÀýÈ磺
×Ö·û´®³£Á¿ÖÐÔÊÐíµÄ×î´ó×Ö·ûÊý
×÷Ϊ²ÎÊý´«µÝµ½º¯ÊýÖеÄÊý¾Ý´óС£¨Õ»´óС£©
º¯ÊýÉùÃ÷ÖеIJÎÊý¸öÊý
º¯Êýµ÷ÓÃÁ´µÄ×î´ó³¤¶È
ÒÔ×èÈû·½Ê½ÔÚä¯ÀÀÆ÷ÖÐÔËÐеÄ×î´óʱ¼ä
±äÁ¿ÃûµÄ×î´ó³¤¶È
¾¡¹ÜÈç´Ë£¬JavaScript ÔÚä¯ÀÀÆ÷ÖеıíÏÖ»¹ÊÇ»ù±¾ÉÏ¿ÉÐŵġ£
´ÓÈí¼þµ½Ó²¼þ
ʵ¼ÊÉÏ£¬JavaScriptÒѾǶÈëµ½ÁË´Ó»úÆ÷È˵½¸÷ÖÖ¼ÒµçµÈ¸÷ÖÖ¸÷ÑùµÄÉ豸ÖС£ÕâÀïÂ¡ÖØÍÆ¼öÎҷdz£¾´ÅåµÄºÃÓÑ¡ª¡ªÖܰ®ÃñÀÏʦ£¬ËûÔÚRuff£¨Äϳ±ÐÅÏ¢¿Æ¼¼£©×öµÄÊÂÇé¾ÍÊÇJavaScript
ÔÚÎïÁªÍøÉϵĽøÒ»²½Ó¦Óá£
Ruff ÊÇÒ»¸ö¿ÉÒÔÈÿª·¢ÕßʵÏÖÃô½Ý¿ª·¢ÖÇÄÜÓ²¼þµÄϵͳƽ̨¡£Ëü°üº¬ÁËRuff SDK¡¢Ruff OS£¬Rap
RegistryµÈ¡£´Ó¼¼ÊõÉϽ²£¬Ruff ÊÇÒ»¸ö JavaScript ÔËÐÐʱ£¬×¨ÎªÓ²¼þ¿ª·¢¶øÉè¼Æ¡£Ruff
¶ÔÓ²¼þ½øÐÐÁ˳éÏó£¬Ê¹ÓÃÁË»ùÓÚʼþÇý¶¯¡¢Òì²½ I/O µÄÄ£ÐÍ£¬Ê¹Ó²¼þ¿ª·¢±äµÃÇáÁ¿¶øÇÒ¸ßЧ¡£Ó²¼þ³éÏó²ã£¬Ê¹µÃ²Ù×÷Ó²¼þÓÌÈçÆÕͨ³ÌÐò¿â£¬½µµÍÁËÓ²¼þÁìÓò½øÈëÃż÷¡£
Ruff Ϊ¿ª·¢ÕßÌṩÁËÍêÉÆµÄ¿ª·¢·þÎñ¡£´ÓÏîÄ¿Éú²ú¡¢Èí¼þ°ü¹ÜÀí¡¢Ó¦ÓùÜÀí¡¢ÍâÉè¹ÜÀíµ½¹Ì¼þ¹ÜÀíµÈһϵÁÐÏÖ´úÈí¼þ¿ª·¢·½Ê½£¬PC
¶ËÍê³É¿ª·¢£¬ÎÞÐèÉÕ°å×Ó£¬ÌáÉý¿ª·¢ÕߵĿª·¢Ð§ÂÊ¡£Ruff »¹ÌṩÁËÍêÉÆµÄ²âÊÔ¿ò¼Ü£¬Ö§³Ö assert¡¢test¡¢mock
µÈÄ£¿é£¬ÔÚ¿ª·¢»úÉϲâÊÔÂß¼£¬Ó²¼þ²âÊÔÒ²ÄÜ TDD¡£
¹ÙÍø£¨ruff.io) Éϸø³öµÄʾÀýÈçÏ£º
$.ready(function()
{
$('#led-0').turnOn();
}); |
´ò¿ªµç·°åÉϵÄÒ»¸öLED µÆ£¬¾ÍÊÇÈç´ËµÄ¼òµ¥¡£Ä¿Ç°£¬Ò»¸ö Ruff Ó²¼þͬʱֻÄÜÔËÐÐÒ»¿î Ruff
Ó¦Óã¬Ëü½«ÓµÓÐ×Ô¼º¶ÀÁ¢µÄ½ø³Ì£¬×Å¿ÉÄÜÒ²Êܵ½JavaScript×ÔÉíµÄÏÞÖÆ°É¡£
¹Ø×¢ÐÔÄÜ
ÐÔÄÜÊÇȫջ¹Ø×¢µÄÒ»¸öÖØÒªÎ¬¶È£¬ÄǾ䡰¹ýÔçÓÅ»¯ÊÇÍò¶ñÖ®Ô´¡±Êµ¼ÊÉÏÊÇÎÒÃǶԸߵÂÄÉÏÈÉúµÄ¶ÏÕÂÈ¡Ò壬ÔÎÄÊÇÕâÑùµÄ£º
ÎÒÃÇÓ¦¸ÃÔÚÀýÈç97%µÄʱ¼äÀÍüµôС´¦µÄЧÂÊ£»
¹ýÔçÓÅ»¯ÊÇÍò¶ñÖ®Ô´¡£
µ«ÎÒÃDz»Ó¦¸Ã´í¹ý¹Ø¼üµÄ3%ÖеĻú»á¡£
ʵ¼ÊÉÏÊǷǹؼü·¾¶ÉϵÄÓÅ»¯ÊÇÍò¶ñÖ®Ô´£¬ÎÊÌâÔÚÓÚÈçºÎÈ·¶¨ÎÒÃǵĴúÂëÊÇ·ñÔڹؼü·¾¶ÉÏ¡£²»ÂÛ½ÚÊ¡µÄʱ¼ä¶àôÉÙ£¬»¨·ÑÔڹؼü·¾¶ÉϵÄÐÔÄÜÓÅ»¯¶¼ÊÇÖµµÃµÄ¡£
¶ÔÓÚÐÔÄÜÓÅ»¯¹¤¾ß£¬ÓÃÓÚJavaScriptÔ´´úÂëѹËõÓÐ google
Closure complier£¬ packer £¬YUI compresso r£¬JSminµÈ¡£Ò³ÃæµÄÐÔÄÜÓÅ»¯¹¤¾ßÓÐYSlow
ºÍPage SpeedµÈ¡£Êµ¼ÊÉÏ£¬ÈκÎÓÐÒâÒåÇÒ¿É¿¿µÄÐÔÄܲâÊÔ¶¼ÊÇ»ùÓÚͳ¼ÆÑ§ÉϵĺÏÀíʵ¼ù¡£ ¾ÍJavaScript
´úÂë±¾ÉíµÄÐÔÄܶøÑÔ£¬benchmarkjs ÊÇÒ»¸öºÜºÃµÄ¹¤¾ß£¬¶øjsperf.com ÌṩÁ˶ÔJavaScript
Ö´Ðл·¾³µÄÐÔÄܲâÊÔ¡£
×ÜÖ®£¬JavaScript ÊÇÒ»¸ö¾ßÓÐÇ¿´óÉúÃüÁ¦µÄÓïÑÔ£¬Ç°¶Ë¿ò¼Ü¸üÊÇÈÕÐÂÔÂÒ죬´ÓAngular£¬Vue£¬µ½React£¬
ÄËÖÁReact Native£¬¸øÈËÒÔÄ¿²»Ï¾½ÓµÄ¸Ð¾õ£¬µ«ÊÇ£¬ÀÏÂëÅ©¾õµÃ»ù´¡ÈÏʶ»¹ÊǷdz£±ØÒªµÄ£¬ÎðÔÚ¸¡É³Öþ¸ßËþ¡£ |