Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Передача по ссылке или по значению, spread оператор (es6-es9)
Примитивные типы данных передаются по значению let a = 5, b = 1; a = 10; console.log(a); -> 10 {}, [], f(x) и другие не примитивные типы данных передают данные по ссылке let obj = { a: 1, b: 10 }; let copy = obj; // в copy находиться не копия структуры и данных obj, а ссылка на copy.a = 10; // obj и при изменении copy меняется и obj (типа ярлыка)
console.log(copy); -> { a: 10, b: 10 } console.log(obj); -> { a: 10, b: 10 } Для копирования объектов используют: 1.Создаём цикл function copy (mainObj) { let objCopy = {};
let key; // переменную key можно создавать в не переберающей конструкции for (key in mainObj) { //есть ключи внутри mainObj, который передаётся ф-и objCopy[key] = mainObj[key]; // в objCopy создаю новоё свойство [key] } // - это св-о будет содержать токое же обозначение как и в главном объекте // и делаем копию из главного об-та
return objCopy; }
const numbers = { a: 2, b: 5, c: { x: 7, y: 4, } };
const newNumbers = copy (numbers);
newNumbers.a = 10; console.log(newNumbers); -> { a: 10, b: 5, c: { x: 7, y: 4 } } – новые данные console.log(numbers); -> { a: 2, b: 5, c: { x: 7, y: 4 } } Если я попробую изменить в копированом объекте x, то получу, что newNumbers.c.x = 10; { a: 10, b: 5, c: { x: 10, y: 4 } } – новый объект поменялось значение по { a: 2, b: 5, c: { x: 10, y: 4 } } - старый объект ссылке для newNumbers Это связано с тем, что есть глубокое копирование данных и поверхностное 2. Метод Object.assign (куда, откуда); const numbers = { a: 2, b: 5, c: { x: 7, y: 4, } }; created new not dependent Surface cope {} const add = { d: 17, e: 20 };
console.log(Object.assign(numbers, add)); >>{ a: 2, b: 5, c: { x: 7, y: 4 }, d: 17, e: 20 }
Можно создать копию объекта в пустой {}
console.log(Object.assign({}, add)); -> { d: 17, e: 20 } 3.Есть метод slice() для копии [] const oldArray = [1, 2, 3]; const newArray = oldArray.slice();
newArray[1] = "asasdaas";
console.log(oldArray); -> [ 1, 2, 3 ] console.log(newArray); -> [ 1, 'asasdaas', 3 ]
4.Оператор разворота spred ES6(появился для [])/ES8(появился для {}) const video = ["youtube", "video", "rutube"], blogs = ["wordpress", "livejurnal", "blogs"], internet = [...video,...blogs, "vk", "facebook"]; console.log(internet);
-> internet [ 'youtube', 'video', 'rutube', 'wordpress', 'livejurnal', 'blogs', 'vk', 'facebook' ] Задача: есть функция и массив с тремя аргументами. Нужно передать аргументы из массива в ф-ю function log (a, b, c) { console.log(a); // link console.log(b); // name console.log(c); // comment }
const num = ['link', 'name', 'comment'];
log (...num);
Fast copy [] const arr = ["a", "b"]
const newArr = [...arr];
For {} const obj = { name: "too", mango: "fruit", };
const newObj = {...obj};
console.log(newObj); -> { name: 'too', mango: 'fruit' }
Основы ООП, прототипно-ориентированное наследование https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/proto https://javascript.info/prototype-methods
ООП – наука о правильной архитектуре
Динамическая типизация в JS Динамическая типизация – возможность одного типа данных с течением времени превращаться в другой тип данных // To String
//1) Самый старый и редкий способ преобразования console.log(typeof(String(null))); -> string console.log(typeof(String(4))); -> string //2) Конкатинация - сложение строк || сложение строки с чем-то что-то console.log(typeof(null + "")); -> string //Былое применение до интерполяции const num = 5; console.log("vk.com/category/" + num); -> vk.com/category/5 //передача стиля через строку.приходить число, которое должно быть размером const frontSize = 26 + "px"; // To Number
//1) Редкий мамонт console.log(typeof(Number("rt"))); -> number
//2) Унарный + console.log(typeof(+"5"));
//3) Methods of numbres можно превращать определённые струкруты в числа console.log(typeof(parseInt(+"15px", 10 /*-дясятичная система*/))); //неочевидное преобразование console.log(typeof(+"5"));
//To Boolean
//1) 0, "", null, NaN - false, всё остальное - true.Нативное использование: let switcher = null; if (switcher) { console.log(typeof("...Working")); } switcher = 1; if (switcher) { console.log(typeof("...Working")); }
//2) Редкий мамонт console.log(typeof(Boolean("rt")));
//3) Rare method for disposable/one-off script console.log(typeof(!!"44444"));
|
|||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 90; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.175.182 (0.009 с.) |