Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 156; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.007 с.) |