JavaScript ES5
- Página anterior Versión de JS
- Página siguiente JS 2015 (ES6)
¿Qué es 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 y Setter de propiedades
- nuevas propiedades y métodos de objeto
ECMAScript 5 语法更改
- 对字符串的属性访问 [ ]
- 数组和对象字面量中的尾随逗号
- 多行字符串字面量
- 作为属性名称的保留字
"use strict" 指令
"use strict
" 定义 JavaScript 代码应该以“严格模式”执行。
例如,使用严格模式,不能使用未声明的变量。
您可以在所有程序中使用严格模式。它可以帮助您编写更清晰的代码,例如阻止您使用未声明的变量。
"use strict
” 只是一个字符串表达式。旧浏览器如果不理解它们就不会抛出错误。
请阅读 JS 严格模式 中的更多内容。
String.trim()
String.trim()
删除字符串两端的空白字符。
Ejemplo
var str = " Hello World! "; alert(str.trim());
请在 JS 字符串方法 在此处阅读更多内容。
Array.isArray()
isArray()
该方法检查对象是否为数组。
Ejemplo
function myFunction() { var fruits = ["Banana", "Orange", "Apple", "Mango"]; var x = document.getElementById("demo"); x.innerHTML = Array.isArray(fruits); }
请在 JS 数组 在此处阅读更多内容。
Array.forEach()
forEach()
该方法为每个数组元素调用一次函数。
Ejemplo
var txt = ""; var numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); function myFunction(value) { txt = txt + value + "<br>"; }
请在 Métodos de iteración de arrays en JS 中学习更多内容。
Array.map()
此示例给每个数组值乘以 2:
Ejemplo
var numbers1 = [45, 4, 9, 16, 25]; var numbers2 = numbers1.map(myFunction); function myFunction(value) { return value * 2; }
请在 Métodos de iteración de arrays en JS 中学习更多内容。
Array.filter()
此示例用值大于 18 的元素创建一个新数组:
Ejemplo
var numbers = [45, 4, 9, 16, 25]; var over18 = numbers.filter(myFunction); function myFunction(value) { return value > 18; }
请在 Métodos de iteración de arrays en JS 中学习更多内容。
Array.reduce()
此示例确定数组中所有数的总和:
Ejemplo
var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduce(myFunction); function myFunction(total, value) { return total + value; }
请在 Métodos de iteración de arrays en JS 中学习更多内容。
Array.reduceRight()
Este ejemplo también es para determinar la suma total de todos los números en el array:
Ejemplo
var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduceRight(myFunction); function myFunction(total, value) { return total + value; }
请在 Métodos de iteración de arrays en JS 中学习更多内容。
Array.every()
Este ejemplo verifica si todos los valores son mayores que 18:
Ejemplo
var numbers = [45, 4, 9, 16, 25]; var allOver18 = numbers.every(myFunction); function myFunction(value) { return value > 18; }
请在 Métodos de iteración de arrays en JS 中学习更多内容。
Array.some()
Este ejemplo verifica si algunos valores son mayores que 18:
Ejemplo
var numbers = [45, 4, 9, 16, 25]; var allOver18 = numbers.some(myFunction); function myFunction(value) { return value > 18; }
请在 Métodos de iteración de arrays en JS 中学习更多内容。
Array.indexOf()
Busca un valor específico en el array y devuelve su posición:
Ejemplo
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var a = fruits.indexOf("Apple");
请在 Métodos de iteración de arrays en JS中学习更多内容。
Array.lastIndexOf()
Array.lastIndexOf()
Con Array.indexOf()
Similar, pero comienza a buscar desde el final del array。
Ejemplo
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var a = fruits.lastIndexOf("Apple");
请在 Métodos de iteración de arrays en JS 中学习更多内容。
JSON.parse()
Un uso común de JSON es recibir datos desde el servidor web。
Imaginemos que recibimos esta cadena de texto desde el servidor web:
'{"name":"Bill", "age":62, "city":"Seatle"}'
Funciones de JavaScript JSON.parse()
Se utiliza para convertir texto en un objeto JavaScript:
var obj = JSON.parse('{"name":"Bill", "age":62, "city":"Seatle"}');
Por favor, consulte nuestra Tutorial JSON 中学习更多内容。
JSON.stringify()
Un uso común de JSON es enviar datos a un servidor web。
Cuando enviamos datos a un servidor web, los datos deben ser una cadena。
Imaginemos, tenemos este objeto en JavaScript:
var obj = {"name":"Bill", "age":62, "city":"Seatle"};
Por favor, use la función JavaScript JSON.stringify() para convertirla en una cadena。
var myJSON = JSON.stringify(obj);
El resultado será una cadena que sigue la representación JSON。
myJSON ahora es una cadena, lista para enviar al servidor:
Ejemplo
var obj = {"name":"Bill", "age":62, "city":"Seatle"}; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON;
Por favor, consulte nuestra Tutorial JSON 中学习更多内容。
Date.now()
Date.now() devuelve el número de milisegundos transcurridos desde la fecha cero (1 de enero de 1970 a las 00:00:00:00).
Ejemplo
var timInMSs = Date.now();
Date.now()
devuelve el mismo resultado que ejecutar getTime() en el objeto Date.
请在 JS Fecha para aprender más.
Getter y Setter de propiedades
ES5 le permite definir métodos de objeto utilizando una sintaxis similar a obtener o establecer propiedades.
Este ejemplo crea un getter:
Ejemplo
// Crear objeto: var person = { firstName: "Bill", lastName : "Gates" get fullName() { return this.firstName + " " + this.lastName; } }); // Usar getter para mostrar datos provenientes del objeto: document.getElementById("demo").innerHTML = person.fullName;
Este ejemplo crea un setter y un getter:
Ejemplo
var person = { firstName: "Bill", lastName : "Gates" language : "NO", get lang() { return this.language; , set lang(value) { this.language = value; } }); // Usar setter para establecer propiedades del objeto: person.lang = "en"; // Usar getter para mostrar datos provenientes del objeto: document.getElementById("demo").innerHTML = person.lang;
Este ejemplo utiliza setter para asegurar que la actualización de la capitalización del idioma sea correcta:
Ejemplo
var person = { firstName: "Bill", lastName : "Gates" language : "NO", set lang(value) { this.language = value.toUpperCase(); } }); // Usar setter para establecer propiedades del objeto: person.lang = "en"; // Mostrar datos provenientes del objeto: document.getElementById("demo").innerHTML = person.language;
请在 Accesores de objeto JS para aprender más sobre getters y setters.
nuevas propiedades y métodos de objeto
Object.defineProperty()
es un nuevo método de objeto en ES5.
permite que defina propiedades de objeto y / o cambie valores y / o metadatos de propiedades.
Ejemplo
// Crear objeto: var person = { firstName: "Bill", lastName : "Gates" language : "NO", }); // Cambiar propiedad: Object.defineProperty(person, "language", { value: "EN", writable : true, enumerable: true, configurable : true }); // Enumerar propiedades var txt = ""; for (var x in person) { txt += person[x] + "<br>"; } document.getElementById("demo").innerHTML = txt;
El siguiente ejemplo es el mismo código, pero oculta la propiedad de idioma en la enumeración:}
Ejemplo
// Crear objeto: var person = { firstName: "Bill", lastName : "Gates" language : "NO", }); // Cambiar propiedad: Object.defineProperty(person, "language", { value: "EN", writable : true, enumerable : false, configurable : true }); // Enumerar propiedades var txt = ""; for (var x in person) { txt += person[x] + "<br>"; } document.getElementById("demo").innerHTML = txt;
Este ejemplo crea un setter y un getter para asegurar la actualización en mayúsculas del idioma:
Ejemplo
// Crear objeto: var person = { firstName: "Bill", lastName : "Gates" language : "NO" }); // Cambiar propiedad: Object.defineProperty(person, "language", { get : function() { return language }, set : function(value) { language = value.toUpperCase()} }); // Cambiar el idioma person.language = "en"; // Mostrar el idioma document.getElementById("demo").innerHTML = person.language;
Nuevos métodos de objeto en ES5
ECMAScript 5 añadió muchos nuevos métodos de objeto a JavaScript:
// Añadir o cambiar una propiedad de un objeto Object.defineProperty(object, property, descriptor) // Añadir o cambiar múltiples propiedades de un objeto Object.defineProperties(object, descriptors) // Acceder a la propiedad Object.getOwnPropertyDescriptor(object, property) // Devuelve todas las propiedades como un array Object.getOwnPropertyNames(object) // Devuelve las propiedades enumerables como un array Object.keys(object) // Acceder al prototipo 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()
方法返回字符串中指定索引(位置)的字符:
Ejemplo
var str = "HELLO WORLD"; str.charAt(0); // 返回 H
ECMAScript 5 允许对字符串进行属性访问:
Ejemplo
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,]
Texto de cadena multilínea
Ejemplo
"Hello \", Kitty!";
El método \ puede no tener soporte general.
Los navegadores más antiguos pueden manejar de manera diferente los espacios alrededor del carácter diagonal invertida.
Algunos navegadores antiguos no permiten espacios después del carácter \.
Una manera más segura de descomponer texto de cadena es usar concatenación de cadenas:
Ejemplo
"Hello " + "Kitty!";
Palabras reservadas como nombres de propiedades
ECMAScript 5 permite usar palabras reservadas como nombres de propiedades:
Ejemplo de objeto
var obj = {name: "Bill", new: "yes"}
Soporte de navegador para ES5 (ECMAScript 5)
Chrome 23, IE 10 y Safari 6 son los primeros navegadores que completamente soportan ECMAScript 5:
Chrome 23 | IE10 / Edge | Firefox 21 | Safari 6 | Opera 15 |
Septiembre de 2012 | Septiembre de 2012 | Abril de 2013 | Julio de 2012 | Julio de 2013 |
- Página anterior Versión de JS
- Página siguiente JS 2015 (ES6)