Часть II
методы
Поскольку мы уже рассмотрели основы объектов, давайте теперь углубимся в более сложные концепции, такие как методы, ключевые слова this, ключевые слова new и прототипы.
В JavaScript методы — это функции, которые присоединяются к объектам как свойства. Методы можно использовать для выполнения действий над объектом, изменения его свойств или возврата значений на основе свойств объекта(методы — это не что иное, как свойства, содержащие значения функций).
const person = { name: 'george', age: 30, greet() { console.log(`Hi,I am George.`); } }; person.greet(); // Output: 'Hi,I am George.'
это (ключевое слово)
Метод объекта: this
используется внутри метода объекта, он относится к объекту, свойством которого является метод.
const person = { name: 'george', age: 30, greet() { console.log(`Hi,I am ${this.name}.`); } }; person.greet(); // Output: 'Hi,I am George.' //there is same output,but there is other uses of this
В JavaScript ключевое слово this используется для ссылки на объект, которому принадлежит функция или к которому она вызывается. Конкретный объект, к которому относится «это», может меняться в зависимости от того, как вызывается функция и контекст, в котором она выполняется.
- Глобальный контекст: когда
this
используется в глобальном контексте (вне какой-либо функции), он относится к глобальному объекту, который являетсяwindow
в среде браузера иglobal
в Node.js. - Контекст функции: когда
this
используется внутри обычной функции, он ссылается на глобальный объект, если функция не вызывается с использованием одного из методов, указанных ниже. - Вызов метода: когда метод вызывается с использованием записи через точку, например
object.method()
,this
внутри метода относится к объекту, для которого вызывается метод. - Вызов конструктора: когда функция вызывается с ключевым словом
new
для создания нового объекта,this
внутри функции относится к новому создаваемому объекту.
const person = { name: 'John', age: 30, greet: function() { console.log(`Hi, my name is ${this.name} and I'm ${this.age} years old.`); } }; person.greet(); // Output: Hi, my name is John and I'm 30 years old. function introduce() { console.log(`My name is ${this.name} and I'm ${this.age} years old.`); } introduce(); // Output: My name is John and I'm 30 years old.
новый(ключевое слово)
В JavaScript ключевое слово new
используется для создания экземпляра объекта на основе функции-конструктора. Функция-конструктор — это обычная функция, предназначенная для использования с ключевым словом new
для создания объектов.
function Person(name, age) { this.name = name; this.age = age; } const person = new Person('george', 33); console.log(person.name); // Output: 'george' console.log(person.age); // Output: 33
В этом примере мы определяем функцию-конструктор с именем Person
, которая принимает два аргумента name
и age
. Внутри функции-конструктора мы используем ключевое слово this
, чтобы задать свойства name
и age
создаваемого экземпляра объекта. Чтобы создать экземпляр объекта Person
, мы используем ключевое слово new
, за которым следует функция-конструктор Person
. с необходимыми аргументами. Результатом является экземпляр объекта со своими собственными свойствами name
и age
. Использование ключевого слова new
с функцией-конструктором является распространенным способом создания нескольких экземпляров объекта с одинаковыми свойствами и поведением. Каждый экземпляр объекта, созданный с помощью ключевого слова new
, независим и имеет собственный набор свойств и методов.
функция-конструктор — функция-конструктор — это особый тип функции, который используется для создания новых объектов с определенным набором свойств и методов. Функции-конструкторы обычно называются с заглавной буквы, чтобы отличить их от обычных функций.
прототипы
Прототипы — это фундаментальная концепция JavaScript, которая обеспечивает наследование объектов и помогает уменьшить дублирование кода. У каждого объекта в JavaScript есть прототип, который является ссылкой на другой объект, служащий шаблоном для первого объекта.
Вы можете создать прототип объекта с помощью метода Object.create()
или с помощью функции-конструктора. Вот пример создания объекта с прототипом с помощью метода Object.create()
:
const animal = { makeSound() { console.log('Animal sound!'); } }; const dog = Object.create(animal); dog.breed = 'Labrador'; dog.makeSound(); // Output: 'Animal sound!'
Прототип — это объект, связанный с функцией-конструктором. Прототип определяет свойства и методы, которые наследуются всеми экземплярами функции-конструктора. Разница между прототипами и объектами заключается в том, что прототипы определяют свойства и методы, которые являются общими для всех экземпляров. функции-конструктора, а объекты имеют собственный набор свойств и методов, уникальных для каждого экземпляра.
статические методы объекта
Статические методы в JavaScript — это методы, которые вызываются в функции-конструкторе объекта, а не в экземплярах объекта. Они могут быть полезны для выполнения операций, относящихся к классу в целом, а не к отдельным экземплярам класса.
статические методы очень полезны, давайте рассмотрим некоторые из них:
- Object.assign(): этот метод используется для копирования значений всех перечислимых собственных свойств из одного или нескольких исходных объектов в целевой объект.
- Object.keys(): этот метод возвращает массив имен всех собственных перечисляемых свойств объекта.
- Object.values(): этот метод возвращает массив значений всех собственных перечисляемых свойств объекта.
//.assign const obj1 = { a: 1, b: 2, c: 3 }; const obj2 = { d: 4, e: 5 }; const newObj = Object.assign({}, obj1, obj2); console.log(newObj); // Output: { a: 1, b: 2, c: 3, d: 4, e: 5 } //.keys const obj = { a: 1, b: 2, c: 3 }; const keys = Object.keys(obj); console.log(keys); // Output: ['a', 'b', 'c'] //.values const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // Output: [1, 2, 3]