JavaScript ES5

Kwamta ECMAScript 5 ni a ni?

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()
  • Attribute Getter da Setter
  • kawo hoto na abin da da abin da hoto na abin da

ECMAScript 5 语法更改

  • 对字符串的属性访问 [ ]
  • 数组和对象字面量中的尾随逗号
  • 多行字符串字面量
  • 作为属性名称的保留字

"use strict" 指令

"use strict" 定义 JavaScript 代码应该以“严格模式”执行。

例如,使用严格模式,不能使用未声明的变量。

您可以在所有程序中使用严格模式。它可以帮助您编写更清晰的代码,例如阻止您使用未声明的变量。

"use strict” 只是一个字符串表达式。旧浏览器如果不理解它们就不会抛出错误。

请阅读 JS 严格模式 中的更多内容。

String.trim()

String.trim() 删除字符串两端的空白字符。

مثال

var str = "       Hello World!        ";
alert(str.trim());

تجربة شخصية

ka tashiya a kan JS tashiya harsashi 中阅读更多内容。

Array.isArray()

isArray() 方法检查对象是否为数组。

مثال

function myFunction() {
  var fruits = ["Banana", "Orange", "Apple", "Mango"];
  var x = document.getElementById("demo");
  x.innerHTML = Array.isArray(fruits);
}

تجربة شخصية

ka tashiya a kan JS 数组 中阅读更多内容。

Array.forEach()

forEach() 方法为每个数组元素调用一次函数。

مثال

var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value) {
  txt = txt + value + "<br>"; 
}

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

Array.map()

此例给每个数组值乘以 2:

مثال

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value) {
  return value * 2;
}

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

Array.filter()

此例用值大于 18 的元素创建一个新数组:

مثال

var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value) {
  return value > 18;
}

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

Array.reduce()

此例确定数组中所有数的总和:

مثال

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);
function myFunction(total, value) {
  return total + value;
}

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

Array.reduceRight()

这个例子同样是确定数组中所有数的总和:

مثال

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction);
function myFunction(total, value) {
  return total + value;
}

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

Array.every()

这个例子检查是否所有值都超过 18:

مثال

var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value) {
  return value > 18;
}

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

Array.some()

这个例子检查某些值是否超过 18:

مثال

var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.some(myFunction);
function myFunction(value) {
  return value > 18;
}

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

Array.indexOf()

检索数组中的某个元素值并返回其位置:

مثال

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");

تجربة شخصية

ka tashiya a kan JS 数组迭代方法ka tashiya kungiyar yadda a cikin harsashi.

Array.lastIndexOf()

Array.lastIndexOf()Array.indexOf() 类似,但是从数组结尾处开始检索。

مثال

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");

تجربة شخصية

ka tashiya a kan JS 数组迭代方法 ka tashiya kungiyar yadda a cikin harsashi.

JSON.parse()

JSON 的一个常见用途是从 Web 服务器接收数据。

想象一下,您从 Web 服务器收到这条文本字符串:

'{"name":"Bill", "age":62, "city":"Seatle"}'

Kwarin Tsarin JavaScript JSON.parse() 用于将文本转换为 JavaScript 对象:

var obj = JSON.parse('{"name":"Bill", "age":62, "city":"Seatle"}');

تجربة شخصية

请在我们的 JSON 教程 ka tashiya kungiyar yadda a cikin harsashi.

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 教程 ka tashiya kungiyar yadda a cikin harsashi.

Date.now()

Date.now() 返回自零日期(1970 年 1 月 1 日 00:00:00:00)以来的毫秒数。

مثال

var timInMSs = Date.now();

تجربة شخصية

Date.now() 的返回与在 Date 对象上执行 getTime() 的结果相同。

ka tashiya a kan JS 日期 中学习更多。

Attribute Getter da Setter

ES5 ya kawo hoto na kawo hoto na abin da da abin da hoto na abin da kimi na hoto na abin da.

kawo hoto na abin da na abin da kimi na fullName: getter:

مثال

// 创建对象:
var person = {
  firstName: "Bill",
  lastName : "Gates"
  get fullName() {
    return this.firstName + " " + this.lastName;
  }
});
// kawo hoto na abin da daga abin da gudanin gwanan:
document.getElementById("demo").innerHTML = person.fullName;

تجربة شخصية

kawo hoto na abin da na abin da kimi na gwanan: setter da getter:

مثال

var person = {
  firstName: "Bill",
  lastName : "Gates"
  language : "NO",
  get lang() {
    return this.language;
  },
  set lang(value) {
    this.language = value;
  }
});
// kawo hoto na abin da da abin da gudanin gwanan:
person.lang = "en";
// kawo hoto na abin da daga abin da gudanin gwanan:
document.getElementById("demo").innerHTML = person.lang;

تجربة شخصية

kawo hoto na setter na ya kawo hoto na abin da gudanin gwanan da yau:

مثال

var person = {
  firstName: "Bill",
  lastName : "Gates"
  language : "NO",
  set lang(value) {
    this.language = value.toUpperCase();
  }
});
// kawo hoto na abin da da abin da gudanin gwanan:
person.lang = "en";
// hauwa abin da daga abin da:
document.getElementById("demo").innerHTML = person.language;

تجربة شخصية

ka tashiya a kan JS abin da kaiyawa ya kawo hoto na getter da setter.

kawo hoto na abin da da abin da hoto na abin da

Object.defineProperty() ya kawo hoto na abin da ES5.

ya ya kaiya ta kawo abin da kimi na kira abin da kimi da abin da meta-data.

مثال

// 创建对象:
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;

تجربة شخصية

ES5 新的对象方法

ECMAScript 5 为 JavaScript 添加了许多新的对象方法:

// 添加或更改对象属性
Object.defineProperty(object, property, descriptor)
// 添加或更改多个对象属性
Object.defineProperties(object, descriptors)
// 访问属性
Object.getOwnPropertyDescriptor(object, property)
// 将所有属性作为数组返回
Object.getOwnPropertyNames(object)
// 将可枚举属性作为数组返回
Object.keys(object)
// 访问原型
Object.getPrototypeOf(object)
// ya yi kawar da kaiwa na kaiwa na object
Object.preventExtensions(object)
// idan za a iya da a yi kaiwa na property ga a samu true
Object.isExtensible(object)
// ya yi kawar da kaiwa na kaiwa na object (kuma yin kaiwa na mutumma)
Object.seal(object)
// idan object za a yi yaki, za a samu true
Object.isSealed(object)
// ya yi kawar da kaiwa na kaiwa na object
Object.freeze(object)
// ya yi kawar da kaiwa na object
// idan object za a yi yaki, za a samu true

ka tashiya a kan Object.isFrozen(object) ka tashiya kungiyar yadda a cikin harsashi.

tushenin harsashi na object ECMAScript5

charAt() method na iya da a samu mutumma na harsashi na tushenin:

مثال

var str = "HELLO WORLD";
str.charAt(0);            // na iya da a samu H

تجربة شخصية

ECMAScript 5 a yi a yi tushenin harsashi:

مثال

var str = "HELLO WORLD";
str[0];                   // na iya da a samu H

تجربة شخصية

tushenin harsashi na string za a iya da yin iya nuna.

ka tashiya a kan JS tashiya harsashi ka tashiya kungiyar yadda a cikin harsashi.

kuma yin tashiya (Trailing Commas)

ECMAScript 5 a yi a yi kuma yin tashiya:

Object mutumma

person = {
  firstName: "Bill",
  lastName: " Gates",
  age: 62,
}

Array mutumma

points = [
  1,
  5,
  10,
  25,
  40,
  100,
];

Tantalla!!

Internet Explorer 8 za a fasa.

JSON kiya ba a yi kuma yin tashiya.

JSON mutumma:

// a yi
var person = '{"firstName":"Bill", "lastName":"Gates", "age":62}'
JSON.parse(person)
// kiya ba a yi
var person = '{"firstName":"Bill", "lastName":"Gates", "age":62,}'
JSON.parse(person)

JSON tashiya:

// a yi
points = [40, 100, 1, 5, 25, 10]
// kiya ba a yi
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 سبتمبر 2012 أبريل 2013 يوليو 2012 يوليو 2013