ECMAScript 5 - JavaScript 5
ECMAScript 5 ÊÇʲô£¿
ECMAScript 5 Ò²³ÆÎª ES5 ºÍ ECMAScript 2009¡£
±¾Õ½éÉÜ ES5 µÄһЩ×îÖØÒªµÄÌØÐÔ¡£
ECMAScript 5 ÌØÐÔ
ÕâЩÊÇ 2009 Äê·¢²¼µÄÐÂÌØÐÔ£º
- "use strict" Ö¸Áî
- String.trim()
- Array.isArray()
- Array.forEach()
- Array.map()
- Array.filter()
- Array.reduce()
- Array.reduceRight()
- Array.every()
- Array.some()
- Array.indexOf()
- Array.lastIndexOf()
- JSON.parse()
- JSON.stringify()
- Date.now()
- ÊôÐÔ Getter ºÍ Setter
- еĶÔÏóÊôÐԺͷ½·¨
ECMAScript 5 Óï·¨¸ü¸Ä
- ¶Ô×Ö·û´®µÄÊôÐÔ·ÃÎÊ [ ]
- Êý×éºÍ¶ÔÏó×ÖÃæÁ¿ÖеÄÎ²Ëæ¶ººÅ
- ¶àÐÐ×Ö·û´®×ÖÃæÁ¿
- ×÷ΪÊôÐÔÃû³ÆµÄ±£Áô×Ö
"use strict" Ö¸Áî
¡°use strict¡± ¶¨Òå JavaScript ´úÂëÓ¦¸ÃÒÔ¡°Ñϸñģʽ¡±Ö´ÐС£
ÀýÈ磬ʹÓÃÑϸñģʽ£¬²»ÄÜʹÓÃδÉùÃ÷µÄ±äÁ¿¡£
Äú¿ÉÒÔÔÚËùÓгÌÐòÖÐʹÓÃÑϸñģʽ¡£Ëü¿ÉÒÔ°ïÖúÄú±àд¸üÇåÎúµÄ´úÂ룬ÀýÈç×èÖ¹ÄúʹÓÃδÉùÃ÷µÄ±äÁ¿¡£
¡°use strict¡± Ö»ÊÇÒ»¸ö×Ö·û´®±í´ïʽ¡£¾Éä¯ÀÀÆ÷Èç¹û²»Àí½âËüÃǾͲ»»áÅ׳ö´íÎó¡£
ÇëÔĶÁ JS Ñϸñģʽ Öеĸü¶àÄÚÈÝ¡£
String.trim()
String.trim() ɾ³ý×Ö·û´®Á½¶ËµÄ¿Õ°××Ö·û¡£
ʵÀý
var str = " Hello World! "; alert(str.trim());
ÇëÔÚ JS ×Ö·û´®·½·¨ ÖÐÔĶÁ¸ü¶àÄÚÈÝ¡£
Array.isArray()
isArray() ·½·¨¼ì²é¶ÔÏóÊÇ·ñΪÊý×é¡£
ʵÀý
function myFunction() { var fruits = ["Banana", "Orange", "Apple", "Mango"]; var x = document.getElementById("demo"); x.innerHTML = Array.isArray(fruits); }
ÇëÔÚ JS Êý×é ÖÐÔĶÁ¸ü¶àÄÚÈÝ¡£
Array.forEach()
forEach() ·½·¨ÎªÃ¿¸öÊý×éÔªËØµ÷ÓÃÒ»´Îº¯Êý¡£
ʵÀý
var txt = ""; var numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); function myFunction(value) { txt = txt + value + "<br>"; }
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.map()
Õâ¸öÀý×Ó¸øÃ¿¸öÊý×éÖµ³ËÒÔ 2£º
ʵÀý
var numbers1 = [45, 4, 9, 16, 25]; var numbers2 = numbers1.map(myFunction); function myFunction(value) { return value * 2; }
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.filter()
´ËÀýÓÃÖµ´óÓÚ 18 µÄÔªËØ´´½¨Ò»¸öÐÂÊý×飺
ʵÀý
var numbers = [45, 4, 9, 16, 25]; var over18 = numbers.filter(myFunction); function myFunction(value) { return value > 18; }
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.reduce()
Õâ¸öÀý×ÓÈ·¶¨Êý×éÖÐËùÓÐÊýµÄ×ܺͣº
ʵÀý
var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduce(myFunction); function myFunction(total, value) { return total + value; }
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.reduceRight()
Õâ¸öÀý×ÓͬÑùÊÇÈ·¶¨Êý×éÖÐËùÓÐÊýµÄ×ܺͣº
ʵÀý
var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduceRight(myFunction); function myFunction(total, value) { return total + value; }
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.every()
Õâ¸öÀý×Ó¼ì²éÊÇ·ñËùÓÐÖµ¶¼³¬¹ý 18£º
ʵÀý
var numbers = [45, 4, 9, 16, 25]; var allOver18 = numbers.every(myFunction); function myFunction(value) { return value > 18; }
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.some()
Õâ¸öÀý×Ó¼ì²éijЩֵÊÇ·ñ³¬¹ý 18£º
ʵÀý
var numbers = [45, 4, 9, 16, 25]; var allOver18 = numbers.some(myFunction); function myFunction(value) { return value > 18; }
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.indexOf()
¼ìË÷Êý×éÖеÄij¸öÔªËØÖµ²¢·µ»ØÆäλÖãº
ʵÀý
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var a = fruits.indexOf("Apple");
ÇëÔÚ JS Êý×éµü´ú·½·¨ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Array.lastIndexOf()
Array.lastIndexOf() Óë Array.indexOf() ÀàËÆ£¬µ«ÊÇ´ÓÊý×é½áβ´¦¿ªÊ¼¼ìË÷¡£
ʵÀý
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var a = fruits.lastIndexOf("Apple");
ÇëÔÚ JS Êý×éµü´ú·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
JSON.parse()
JSON µÄÒ»¸ö³£¼ûÓÃ;ÊÇ´Ó Web ·þÎñÆ÷½ÓÊÕÊý¾Ý¡£
ÏëÏóһϣ¬Äú´ÓWeb·þÎñÆ÷ÊÕµ½ÕâÌõÎı¾×Ö·û´®£º
'{"name":"Bill", "age":62, "city":"Seatle"}'
JavaScript º¯Êý JSON.parse() ÓÃÓÚ½«Îı¾×ª»»Îª JavaScript ¶ÔÏó£º
var obj = JSON.parse('{"name":"Bill", "age":62, "city":"Seatle"}');
ÇëÔÚÎÒÃÇµÄ JSON ½Ì³Ì ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
JSON.stringify()
JSON µÄÒ»¸ö³£¼ûÓÃ;Êǽ«Êý¾Ý·¢Ë͵½Web·þÎñÆ÷¡£
½«Êý¾Ý·¢Ë͵½ Web ·þÎñÆ÷ʱ£¬Êý¾Ý±ØÐëÊÇ×Ö·û´®¡£
ÏëÏóһϣ¬ÎÒÃÇÔÚ JavaScript ÖÐÓÐÕâ¸ö¶ÔÏó£º
var obj = {"name":"Bill", "age":62, "city":"Seatle"};
ÇëʹÓà JavaScript º¯Êý JSON.stringify() ½«Æäת»»Îª×Ö·û´®¡£
var myJSON = JSON.stringify(obj);
½á¹û½«ÊÇ×ñÑ JSON ±íʾ·¨µÄ×Ö·û´®¡£
myJSON ÏÖÔÚÊÇÒ»¸ö×Ö·û´®£¬×¼±¸ºÃ·¢Ë͵½·þÎñÆ÷£º
ʵÀý
var obj = {"name":"Bill", "age":62, "city":"Seatle"}; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON;
ÇëÔÚÎÒÃÇµÄ JSON ½Ì³Ì ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Date.now()
Date.now() ·µ»Ø×ÔÁãÈÕÆÚ£¨1970 Äê 1 Ô 1 ÈÕ 00:00:00:00£©ÒÔÀ´µÄºÁÃëÊý¡£
ʵÀý
var timInMSs = Date.now();
Date.now() µÄ·µ»ØÓëÔÚ Date ¶ÔÏóÉÏÖ´ÐÐ getTime() µÄ½á¹ûÏàͬ¡£
ÇëÔÚ JS ÈÕÆÚ ÖÐѧϰ¸ü¶à¡£
ÊôÐÔ Getter ºÍ Setter
ES5 ÔÊÐíÄúʹÓÃÀàËÆÓÚ»ñÈ¡»òÉèÖÃÊôÐÔµÄÓï·¨À´¶¨Òå¶ÔÏó·½·¨¡£
Õâ¸öÀý×ÓΪÃûΪ fullName µÄÊôÐÔ´´½¨Ò»¸ö getter£º
ʵÀý
// ´´½¨¶ÔÏó£º var person = { firstName: "Bill", lastName : "Gates", get fullName() { return this.firstName + " " + this.lastName; } }; // ʹÓà getter ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º document.getElementById("demo").innerHTML = person.fullName;
Õâ¸öÀý×ÓΪÓïÑÔÊôÐÔ´´½¨Ò»¸ö setter ºÍÒ»¸ö getter£º
ʵÀý
var person = { firstName: "Bill", lastName : "Gates", language : "NO", get lang() { return this.language; }, set lang(value) { this.language = value; } }; // ʹÓà setter ÉèÖöÔÏóÊôÐÔ£º person.lang = "en"; // ʹÓà getter ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º document.getElementById("demo").innerHTML = person.lang;
Õâ¸öÀý×ÓʹÓà setter À´È·±£ÓïÑԵĴóд¸üУº
ʵÀý
var person = { firstName: "Bill", lastName : "Gates", language : "NO", set lang(value) { this.language = value.toUpperCase(); } }; // ʹÓà setter ÉèÖöÔÏóÊôÐÔ£º person.lang = "en"; // ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º document.getElementById("demo").innerHTML = person.language;
ÇëÔÚ JS ¶ÔÏó·ÃÎÊÆ÷ ÖÐѧϰ¸ü¶àÓÐ¹Ø Getter ºÍ Setter µÄ֪ʶ¡£
еĶÔÏóÊôÐԺͷ½·¨
Object.defineProperty() ÊÇ ES5 ÖеÄжÔÏó·½·¨¡£
ËüÔÊÐíÄú¶¨Òå¶ÔÏóÊôÐÔºÍ/»ò¸ü¸ÄÊôÐÔµÄÖµºÍ/»òÔªÊý¾Ý¡£
ʵÀý
// ´´½¨¶ÔÏó£º var person = { firstName: "Bill", lastName : "Gates", language : "NO", }; // ¸ü¸ÄÊôÐÔ£º Object.defineProperty(person, "language", { value: "EN", writable : true, enumerable : true, configurable : true }); // ö¾ÙÊôÐÔ var txt = ""; for (var x in person) { txt += person[x] + "<br>"; } document.getElementById("demo").innerHTML = txt;
ÏÂÒ»¸öÀý×ÓÊÇÏàͬµÄ´úÂ룬µ«ËüÒþ²ØÁËö¾ÙÖеÄÓïÑÔÊôÐÔ£º
ʵÀý
// ´´½¨¶ÔÏó£º var person = { firstName: "Bill", lastName : "Gates", language : "NO", }; // ¸ü¸ÄÊôÐÔ£º Object.defineProperty(person, "language", { value: "EN", writable : true, enumerable : false, configurable : true }); // ö¾ÙÊôÐÔ var txt = ""; for (var x in person) { txt += person[x] + "<br>"; } document.getElementById("demo").innerHTML = txt;
´ËÀý´´½¨Ò»¸ö setter ºÍ getter À´È·±£ÓïÑԵĴóд¸üУº
ʵÀý
// ´´½¨¶ÔÏó£º var person = { firstName: "Bill", lastName : "Gates", language : "NO" }; // ¸ü¸ÄÊôÐÔ£º Object.defineProperty(person, "language", { get : function() { return language }, set : function(value) { language = value.toUpperCase()} }); // ¸ü¸ÄÓïÑÔ person.language = "en"; // ÏÔʾÓïÑÔ document.getElementById("demo").innerHTML = person.language;
ECMAScript 5 Ϊ JavaScript Ìí¼ÓÁËÐí¶àеĶÔÏó·½·¨£º
ES5 еĶÔÏó·½·¨ // Ìí¼Ó»ò¸ü¸Ä¶ÔÏóÊôÐÔ Object.defineProperty(object, property, descriptor) // Ìí¼Ó»ò¸ü¸Ä¶à¸ö¶ÔÏóÊôÐÔ Object.defineProperties(object, descriptors) // ·ÃÎÊÊôÐÔ Object.getOwnPropertyDescriptor(object, property) // ½«ËùÓÐÊôÐÔ×÷ΪÊý×é·µ»Ø Object.getOwnPropertyNames(object) // ½«¿Éö¾ÙÊôÐÔ×÷ΪÊý×é·µ»Ø Object.keys(object) // ·ÃÎÊÔÐÍ Object.getPrototypeOf(object) // ·ÀÖ¹Ïò¶ÔÏóÌí¼ÓÊôÐÔ Object.preventExtensions(object) // Èç¹û¿ÉÒÔ½«ÊôÐÔÌí¼Óµ½¶ÔÏó£¬Ôò·µ»Ø true Object.isExtensible(object) // ·ÀÖ¹¸ü¸Ä¶ÔÏóÊôÐÔ£¨¶ø²»ÊÇÖµ£© Object.seal(object) // Èç¹û¶ÔÏó±»Ãܷ⣬Ôò·µ»Ø true Object.isSealed(object) // ·ÀÖ¹¶Ô¶ÔÏó½øÐÐÈκθü¸Ä Object.freeze(object) // Èç¹û¶ÔÏó±»¶³½á£¬Ôò·µ»Ø true Object.isFrozen(object)
ÇëÔÚ ¶ÔÏó ECMAScript5 ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
¶Ô×Ö·û´®µÄÊôÐÔ·ÃÎÊ
charAt() ·½·¨·µ»Ø×Ö·û´®ÖÐÖ¸¶¨Ë÷Òý£¨Î»Ö㩵Ä×Ö·û£º
ʵÀý
var str = "HELLO WORLD";
str.charAt(0); // ·µ»Ø H
ECMAScript 5 ÔÊÐí¶Ô×Ö·û´®½øÐÐÊôÐÔ·ÃÎÊ£º
ʵÀý
var str = "HELLO WORLD";
str[0]; // ·µ»Ø H
¶Ô×Ö·û´®µÄÊôÐÔ·ÃÎÊ¿ÉÄÜÓе㲻¿ÉÔ¤²â¡£
ÇëÔÚ JS ×Ö·û´®·½·¨ ÖÐѧϰ¸ü¶àÄÚÈÝ¡£
Î²Ëæ¶ººÅ(Trailing Commas)
ECMAScript 5 ÔÊÐíÔÚ¶ÔÏóºÍÊý×鶨ÒåÖÐʹÓÃÎ²Ëæ¶ººÅ£º
Object ʵÀý
person = { firstName: "Bill", lastName: " Gates", age: 62, }
Array ʵÀý
points = [ 1, 5, 10, 25, 40, 100, ];
¾¯¸æ£¡£¡£¡
Internet Explorer 8 ½«±ÀÀ£¡£
JSON ²»ÔÊÐíʹÓÃÎ²Ëæ¶ººÅ¡£
JSON ¶ÔÏó£º
// ÔÊÐí£º var person = '{"firstName":"Bill", "lastName":"Gates", "age":62}' JSON.parse(person) // ²»ÔÊÐí£º var person = '{"firstName":"Bill", "lastName":"Gates", "age":62,}' JSON.parse(person)
JSON Êý×飺
// ÔÊÐí£º points = [40, 100, 1, 5, 25, 10] // ²»ÔÊÐí£º points = [40, 100, 1, 5, 25, 10,]
¶àÐÐ×Ö·û´®
Èç¹ûʹÓ÷´Ð±¸ÜתÒ壬ECMAScript 5 ÔÊÐí¶àÐеÄ×Ö·û´®ÎÄ×Ö£¨×ÖÃæÁ¿£©£º
ʵÀý
"Hello \ Kitty!";
\ ·½·¨¿ÉÄÜûÓеõ½ÆÕ±éµÄÖ§³Ö¡£
½Ï¾ÉµÄä¯ÀÀÆ÷¿ÉÄÜ»áÒÔ²»Í¬µÄ·½Ê½´¦Àí·´Ð±¸ÜÖÜΧµÄ¿Õ¸ñ¡£
һЩ¾ÉµÄä¯ÀÀÆ÷²»ÔÊÐí \ ×Ö·ûºóÃæµÄ¿Õ¸ñ¡£
·Ö½â×Ö·û´®ÎÄ×ÖµÄÒ»ÖÖ¸ü°²È«µÄ·½·¨ÊÇʹÓÃ×Ö·û´®Ìí¼Ó£º
ʵÀý
"Hello " + "Kitty!";
±£Áô×Ö×÷ΪÊôÐÔÃû³Æ
ECMAScript 5ÔÊÐí±£Áô×Ö×÷ΪÊôÐÔÃû³Æ£º
¶ÔÏóʵÀý
var obj = {name: "Bill", new: "yes"}
ES5£¨ECMAScript 5£©ä¯ÀÀÆ÷Ö§³Ö
Chrome 23¡¢IE 10 ºÍ Safari 6 ÊǵÚÒ»ÅúÍêȫ֧³Ö ECMAScript 5 µÄä¯ÀÀÆ÷£º
Chrome 23 | IE10 / Edge | Firefox 21 | Safari 6 | Opera 15 |
2012 Äê 9 ÔÂ | 2012 Äê 9 ÔÂ | 2013 Äê 4 ÔÂ | 2012 Äê 7 ÔÂ | 2013 Äê 7 ÔÂ |