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 ÔÂ
VUE