Объекты в JavaScript

Объекты

Объект — это встроенный тип данных для хранения пар ключ-значение. Данные внутри объектов неупорядочены, и значения могут быть любого типа.

Свойства объектов

Объекты заключены в {} и для присвоения значения ключу мы используем, а также мы можем добавить методы/функции в качестве свойств

Например,

let newObject = {
  key1 : "value", 
  key2 : {
    myKey : 14 
  }
  myFuction : function(){
    console.log(`This is how we use function/Method in an Object`) ;
  }
}

Доступ к значениям

мы используем оператор DOT для доступа к значению в объектах

Например,

console.log(newObject.key1) ; //[value](//value) 
newObject.myFunction() // This is how we use function/Method in an Object

Удалить оператора

В JavaScript можно удалить свойство из объекта с помощью оператора «удалить».

Например,

let person = {
  name : "John" ,
  age : 18 ,
  isAdmin : false ,
}
console.log(person) 
//{name: "John", age: 18, isAdmin: false}
delete person.isAdmin
console.log(person) 
//{name: "John", age: 18}

Доступ к свойствам, которые не существуют в объекте

В JavaScript, если мы обращаемся к несуществующему свойству ключа/объекта, оно возвращает undefined, а не ошибку.

В JavaScript есть разница между error и undefined ( undefined не является ошибкой)

Объекты изменяемы в JavaScript

В JavaScript объекты изменяемы, что означает, что мы также можем изменить значение свойств во время выполнения.

Например,

let student = {
   name : "John" 
}
student.name = "Harry"
console.log(student) // {name: "Harry"}

JavaScript для… в цикле

В JavaScript мы также можем перебирать объекты через циклы.

Например,

let mobile = {
  brand: 'Samsung',
  model: 'Galaxy Note 9'
};
for (let key in mobile) {
  console.log(`${key}: ${mobile[key]}`);
}

это ключевое слово

this в JavaScript — зарезервированное ключевое слово. В JavaScript это относится к контексту.

(Глобальный контекст/контекст выполнения). В объектах это относится к самому объекту.

Например,

let myObj = {
   name: 'John',
   sayName: function () {
      console.log(this);
   },
}; 
myObj.sayName();
//{ name: 'John', sayName: [Function: sayName] }
let newObj = {
   name : "newObj" ,
   sayName : function(){
      console.log(this.name) ;
   }
}
newObj.sayName() //newObj

Итак, здесь это относится к самому объекту

ПРИМЕЧАНИЕ: в JS это немного сложно, давайте углубимся в это.

Функция стрелки JavaScript в этой области

В JavaScript ES 6 представлена ​​концепция стрелочной функции, где this в стрелочной функции не ссылается на свой контекст, например, на доступ к свойству родительского контекста.

Например,

const myObj = {
    data: 'abc',
    loggerA: () => { console.log(this.data); },
    loggerB() { console.log(this.data); },
};
myObj.loggerA();    // undefined
myObj.loggerB();    // 'abc'

Фабричные функции JavaScript

функция, которая возвращает объект, известна как фабричная функция. Фабричные функции часто принимают параметры для настройки возвращаемого объекта.

Например,

const dogFactory = (firstName, secondName) => {
  return {
    firstName: firstName,
    secondName: secondName,
    name : function() {
       console.log(`${this.firstName}${this.secondName}`) ;
    }
  };
};

Структурирование JavaScript DE

Структурирование JavaScript DE позволяет нам использовать объект с оператором DOT, а также увеличивает читаемость строки кода.

const Lists = {
    students : {
	...
    } ,
    staffs : {
	...
    } ,
    HOD : '' ,
    totalStudents : 100 ,	
}
console.log(Lists.totalStudents) // 100
//instead
const { students , staffs , HOD , totalStudents } = Lists
console.log(totalStudents) ;

Получение базового понимания этого ключевого слова в Java Script:

https://medium.com/@hari.jsmith494/this-in-java-script-fb0d6af75437