2009 (2009 (ES5))
«جاوااسکریپت ES5» نسخه پایه ای مدرن است. یعنی کلی ابزار استاندارد آورد. مثلا «حالت سخت گیرانه (Strict Mode)»، متدهای آرایه، و JSON. آرام جلو می رویم تا مفاهیم دقیق، ساده، و کاربردی شوند.
حالت سخت گیرانه در جاوااسکریپت ES5
«حالت سخت گیرانه (Strict Mode)» خطاهای پنهان را رو می کند. مثلا اجازه متغیرِ بی اعلان نمی دهد.
"use strict";
let score = 0;
score = score + 1;
دسترسی به کاراکترهای رشته در ES5
با charAt() یا براکت می توان کاراکترِ یک «رشته (String)» را گرفت.
var str = "HELLO WORLD";
var c1 = str.charAt(0);
var str = "HELLO WORLD";
var c2 = str[0];
رشته چندخطی در ES5
می توان انتهای خط گذاشت. امن تر هم الحاق رشته است.
var a = "Hello \";
a = a + "Dolly!";
trim()؛ تمیزکردن فاصله ها
trim() فاصله ابتدا و انتهای رشته را حذف می کند. برای ورودی ها عالی است.
var nameText = " Hello World! ";
var clean = nameText.trim();
Array.isArray() در ES5
می خواهد بداند «این، آرایه است؟». نتیجه «بولی (Boolean)» است.
const fruits = ["Banana", "Orange", "Apple", "Mango"];
const ok = Array.isArray(fruits);
forEach، map، filter، reduce؛ چهار یارِ آرایه
این ها «متد (Method)»های پردازش آرایه هستند. هرکدام کار مشخصی می کنند.
const nums = [2, 4, 6];
let sum = 0;
nums.forEach(function(value) {
sum = sum + value;
});
const numbers1 = [1, 2, 3];
const doubled = numbers1.map(function(v) {
return v * 2;
});
const ages = [12, 18, 22];
const adults = ages.filter(function(v) {
return v >= 18;
});
const values = [10, 20, 30];
const total = values.reduce(function(acc, v) {
return acc + v;
}, 0);
جستجو با indexOf در ES5
indexOf() جای عنصر را می دهد. اگر نبود، -1 می دهد.
const items = ["Apple", "Orange", "Apple", "Mango"];
const pos = items.indexOf("Apple");
JSON.parse و JSON.stringify در ES5
«جی سون (JSON)» قالب تبادل داده است. parse متن را شیء می کند؛ stringify برعکس.
const txt = "{\"name\":\"John\", \"age\":30}";
const obj = JSON.parse(txt);
const data = { name: "John", age: 30 };
const out = JSON.stringify(data);
Date.now، toISOString، toJSON در ES5
این ها تاریخ را میلی ثانیه یا متنِ استاندارد می کنند. برای ثبت رویداد عالی است.
var ms = Date.now();
const d = new Date();
const iso = d.toISOString();
const now = new Date();
const jsonDate = now.toJSON();
Getter و Setter در ES5
«گتر/ستر (Getter/Setter)» روش خواندن/نوشتنِ کنترل شده ویژگی است.
const person = {
firstName: "John",
lastName: "Doe",
get fullName() {
return this.firstName + " " + this.lastName;
}
};
const name1 = person.fullName;
const user = {
language: "no",
set lang(value) {
this.language = value.toUpperCase();
}
};
user.lang = "en";
const langNow = user.language;
Object.defineProperty در ES5
با این متد می توان ویژگی بسازیم یا مشخصاتش را تغییر دهیم.
const person = { firstName: "John", lastName: "Doe" };
Object.defineProperty(person, "language", {
value: "EN",
writable: true,
enumerable: true,
configurable: true
});
Object.create و Object.keys
با create از شیءِ الگو کپی می سازیم. با keys کلیدها را می گیریم.
const base = { firstName: "John", lastName: "Doe" };
const man = Object.create(base);
man.firstName = "Peter";
const person2 = { firstName: "John", age: 50 };
const keys = Object.keys(person2);
bind؛ قرض گرفتن متد
با bind می توان متد شیء دیگر را با this جدید اجرا کرد.
const person = {
firstName: "John",
lastName: "Doe",
fullName: function() {
return this.firstName + " " + this.lastName;
}
};
const member = { firstName: "Hege", lastName: "Nilsen" };
const full = person.fullName.bind(member);
const result = full();
ویرگول انتهایی در شیء و آرایه
در جاوااسکریپت مجاز است؛ اما در JSON مجاز نیست. دقت کن.
const person = {
firstName: "John",
age: 46,
};
const points = [
1,
5,
10,
];
گام های تمرین سریع
- strict را روشن کن و خطاها را ببین.
- با map نمره ها را دوبرابر کن.
- با filter نمره های بالای 18 را بردار.
- با reduce جمع کل را حساب کن.
- داده فرم را با trim تمیز کن.
جمع بندی سریع
- ES5 هسته استانداردهای امروز است.
- Strict Mode کد تمیزتر می سازد.
- متدهای آرایه کارها را کوتاه می کنند.
- JSON برای تبادل امن و ساده است.
- ویرگول انتهایی در JSON ممنوع است.
برای مرور، به جاوااسکریپت ES5 برگرد. سپس ادامه مسیر را در ES6 ببین.