Что такое JavaScript?
JavaScript (js) — это легкий объектно-ориентированный язык программирования, который используется для написания сценариев веб-страниц рядом веб-сайтов. Применительно к HTML-документу это интерпретируемый полнофункциональный язык программирования, обеспечивающий динамическую интерактивность на веб-сайтах. Впервые он был выпущен в 1995 году, чтобы пользователи могли добавлять программы на веб-страницы в браузере Netscape Navigator. С тех пор все другие графические веб-браузеры приняли его. Пользователи могут использовать JavaScript для создания современных веб-приложений, которые взаимодействуют мгновенно, без необходимости каждый раз перезагружать страницу. Js используется на стандартном веб-сайте для обеспечения многих видов интерактивности и простоты.
Особенности JavaScript
Классы JavaScript
Одной из новых функций версии JavaScript ES6 являются классы.
Класс — это план объекта. Класс можно использовать для создания объекта.
Рассмотрим класс как грубый набросок (прототип) дома. Он охватывает всю информацию, касающуюся полов, дверей и окон, среди прочего. Вы строите дом на основе этих описаний. Объект - дом.
Мы можем создать несколько объектов из одного класса, потому что по одному и тому же описанию можно построить множество домов.
Создание класса JavaScript
Класс JavaScript — это синтаксический сахар, аналог функции-конструктора JavaScript.
Функция конструктора определяется как:
// constructor function
function Person () {
this.name = 'Lakshan',
this.age = 23
}
// create an object
const person1 = new Person();
Вместо использования ключевого слова function
вы используете ключевое слово class
для создания классов JS. Например,
// creating a class
class Person {
constructor(name) {
this.name = name;
}
}
Ключевое слово class
используется для создания класса. Свойства назначаются в функции-конструкторе.
Теперь вы можете создать объект. Например,
// creating a class
class Person {
constructor(name) {
this.name = name;
}
}
// creating an object
const person1 = new Person('Kavindu');
const person2 = new Person('Lakshan');
console.log(person1.name); // Kavindu
console.log(person2.name); // Lakshan
Здесь person1
и person2 являются объектами класса Person
.
Примечание. Метод
constructor()
внутри класса вызывается автоматически каждый раз при создании объекта.
При использовании функции конструктора вы определяете методы как:
// constructor function
function Person (name) {
// assigning parameter values to the calling object
this.name = name;
// defining method
this.greet = function () {
return ('Hello' + ' ' + this.name);
}
}
В классе JavaScript легко определить методы. Вы просто указываете имя метода, за которым следует ()
. Например,
class Person {
constructor(name) {
this.name = name;
}
// defining method
greet() {
console.log(`Hello ${this.name}`);
}
}
let person1 = new Person('Lakshan');
// accessing property
console.log(person1.name); // Lakshan
// accessing method
person1.greet(); // Hello Lakshan
Примечание. Чтобы получить доступ к методу объекта, вам нужно вызвать метод, используя его имя, за которым следует
()
.
Геттеры и сеттеры
Методы-получатели возвращают значение объекта в JavaScript, а методы-установщики возвращают значение объекта.
Геттеры и сеттеры можно найти в классах JavaScript. Для методов получения вы используете ключевое слово get, а для методов установки вы используете ключевое слово set. В качестве примера,
class Person {
constructor(name) {
this.name = name;
}
// getter
get personName() {
return this.name;
}
// setter
set personName(x) {
this.name = x;
}
}
let person1 = new Person('Pinky');
console.log(person1.name); // Pinky
// changing the value of name property
person1.personName = 'Shehan';
console.log(person1.name); // Shehan
Подъем
Класс должен быть определен перед его использованием. В отличие от функций и других объявлений JavaScript, класс не поднимается. Например,
// accessing class
const p = new Person(); // ReferenceError
// defining class
class Person {
constructor(name) {
this.name = name;
}
}
Как видите, обращение к классу до его определения приводит к ошибке.
«использовать строгий»
За use-strict обычно следуют классы. Весь код в классе по умолчанию настроен на строгий режим. В качестве примера,
class Person {
constructor() {
a = 0;
this.name = a;
}
}
let p = new Person(); // ReferenceError: Can't find variable: a
Примечание. Класс JavaScript — это особый тип функции. А оператор
typeof
возвращаетfunction
для класса.
Например,
class Person {}
console.log(typeof Person); // function
Обратные вызовы:
Функция — это объект в JavaScript. В результате мы можем использовать параметры для предоставления объектов функциям.
Функции также можно отправлять в качестве параметров другим функциям, которые затем можно вызывать из внешних функций. В результате обратный вызов — это функция, которая передается другой функции. Вторую функцию он выполнит после завершения первой.
Возьмите эту функцию обратного вызова в качестве примера:
function printString(){
console.log("Tom");
setTimeout(function() { console.log("Jacob"); }, 300);
console.log("Mark")
}
printString();
Если бы это был код синхронизации, мы бы столкнулись со следующим выводом.
Tom
Jacob
Mark
Но setTimeout является асинхронной функцией, тогда вывод приведенного выше кода будет таким:
Tom
Mark
Jacob
В JavaScript есть встроенный метод setTimeout, который вызывает функцию или вычисляет выражение через заданный период времени (в миллисекундах).
Другими словами, функция сообщения вызывается после того, как что-то произошло (в этом примере прошло 3 секунды), но не раньше. Таким образом, обратный вызов — это функция, которая передается в качестве аргумента setTimeout.
Обещания:
В JavaScript обещание аналогично обещанию в реальной жизни. Когда мы даем обещание в реальной жизни, мы гарантируем, что выполним его. В конце концов, обещания можно давать только в будущем.
Обещание имеет два исхода: оно либо будет выполнено, либо не будет выполнено, когда придет время.
Это также верно для промисов в JavaScript. Когда мы определяем обещание в JavaScript, оно будет либо разрешено, либо отклонено, когда придет время. Похоже, это условие IF. Однако между ними есть существенные различия.
Промис используется для обработки асинхронного результата операции. JavaScript предназначен для того, чтобы другие синхронные части кода могли выполняться, не дожидаясь завершения асинхронного блока кода. Мы можем использовать обещания, чтобы отложить выполнение блока кода до завершения асинхронного запроса. В результате другие операции могут продолжаться непрерывно.
Состояния обещаний:
Прежде всего, Promise — это объект. Существует 3 состояния объекта Promise:
- Ожидание: начальное состояние до того, как обещание будет успешным или неудачным.
- Решено: выполнено обещание
- Отклонено: невыполненное обещание, выдать ошибку
Когда мы используем промис для запроса данных с сервера, он будет находиться в состоянии ожидания до тех пор, пока мы не получим наши данные.
Промис будет успешно разрешен, если мы сможем получить информацию с сервера. Однако, если мы не получим информацию, Обещание будет отклонено.
Создание обещания:
Во-первых, мы используем конструктор для создания объекта Promise. Обещание имеет два параметра: один для успеха (разрешение) и один для отказа (отклонение):
const myPromise = new Promise((resolve, reject) => {
// condition
});
Давайте создадим обещание:
const myFirstPromise = new Promise((resolve, reject) => {
const condition = true;
if(condition) {
setTimeout(function(){
resolve("Promise is resolved!"); // fulfilled
}, 300);
} else {
reject('Promise is rejected!');
}
});
В приведенном выше обещании, если условие истинно, разрешить обещание, возвращающее «Обещание разрешено», в противном случае вернуть ошибку «Обещание отклонено». Теперь мы создали наш первый промис, теперь давайте его используем.
Использование Promise:
Чтобы использовать обещание создания выше, мы используем then()
для разрешения и catch()
для отклонения.
myFirstPromise
.then((successMsg) => {
console.log(successMsg);
})
.catch((errorMsg) => {
console.log(errorMsg);
});
давайте сделаем еще один шаг:
const demoPromise= function() {
myFirstPromise
.then((successMsg) => {
console.log("Success:" + successMsg);
})
.catch((errorMsg) => {
console.log("Error:" + errorMsg);
})
}
demoPromise();
В нашем созданном промисе условие «истинно», и мы вызываем demoPromise(), после чего наши журналы консоли читают:
Success: Promise is resolved!
Поэтому, если промис будет отклонен, он перейдет к методу catch()
, и на этот раз мы увидим другое сообщение на консоли.
Error: Promise is rejected!
Надеюсь, эта статья даст вам фундаментальные знания о JavaScript, которые нужны каждому разработчику в нынешнюю эпоху 😆
Спасибо, что прочитали, и я надеюсь, что сегодня вы узнали что-то новое :)
~ Кавинду Лакшан