-
Notifications
You must be signed in to change notification settings - Fork 0
https://bakhirev.biz/book/#dcbzy – сюрреализм на js
https://babeljs.io/ - перекодировка в ES5
www.npmjs.com
codewars.com – задачи по js
1. если одно значение null а другое undefined – значения равны.
2. если одно значение число, а второе строка, то строка преобразоваться в число и производиться сравнение.
3. если одно значение true оно преобразуется в 1, если значение false оно преобразоваться в 0.
Оператор идентичности “===” предназначен для проверки значений двух переменных на идентичность,
при этом необходимо помнить о следующих правилах:
> Условие switch
switch (number) {
case “1”: { document.write(“Один”); };
break;
case “2”: { document.write(“Два”); };
break;
default: { document.write(“Вы ввели значение отличное от 1 и 2.”);};
}
Math.floor() – Округляет вниз
Math.ceil – Округляет вверх
Math.round – Округляет до ближайшего целого
Math.sqrt(x) – Корень из х
Math.pow(x, exp) – Возводит число в степень
Math.max(a, b, c…) – Возвращает наибольший из списка аргументов
Math.min(a, b, c…) – Возвращает наименьший из списка аргументов
Math.random() – Возвращает псевдослучайное число в интервале [0,1) – то есть между 0 (включительно) и 1 (не включая). Генератор случайных чисел инициализуется текущим временем.
typeof variable – возвращает тип переменной.
isNaN()
c = parseInt(str); // – переводит строку в числовой формат integer, игнорируя все знаки в строке после первого не числа
d = parseFloat(str); // – переводит строку в вещественный числовой формат, игнорируя все знаки в строке после первого не числа (кроме точки)
.toString(); перевод числа в строку
.toFixed(n) – переводит число в строку с n знаков после запятой
+variable – переводит в число
.length – длина строки
.charCodeAt() – возвр. код символа
charCodeFrom(a,b,…,c) – возвращает строку из указанных кодов символа
.charAt(i) – доступ к i-му символу строки // нумерация строк с 0!!!
.toUpperCase
.toLowerCase
.indexOf(substring, pos);
.lastIndexOf(searchSubstring); – поиск с конца строки
.substring(start [, end]) возвращает подстроку с позиции start до, но не включая end.
.substr(start [, length]) возвращает подстроку с позиции start длиной length символов
.slice(start [, end]) возвращает часть строки от позиции start до, но не включая, позиции end. Отличие substring и slice в работе с отрицательными значениями
str.replace(/\s+/g, ’’) – удалить пробелы
> Массивы
let phonesArr = [];
var numbers = new Array(1, 2, 3);
var digits = new Array(5);
.push(a, b, c) – добавить в конец
.unshift(a, b, c) – добавить в начало
.shift() – удалить первый (без аргументов)
.splice(<нач.позиция>,<сколько удалить>[,<что вставить>,<что вставить>]) – удаляет и вставляет эл-ты
.slice(<нач. поз.>,<кон.поз>) – возвращает подмассив из массива
.reverse() – меняет порядок
.split(<"разделитель">) – трансформирует строку в массив
.join(<"разделитель">) – трансформирует массив в строку
.indexOf(<Значение>) – возвращает индекс заданного значения в массиве
.lastIndexOf(<>) – с конца
.every – проверяет массив на соответствие всех эл-тов условию, описанному в функции, передаваемой в виде аргумента
.some – проверяет массив на соответствие хотя бы одного эл-та условию, описанному в функции, передаваемой в виде аргумента
> Пример:
var a = [1,2,3,4,5,6,7,8];
function check(n) {return n > 0;}
console.log(a.every(check));
или:
console.log(a.every(n => n > 0));
массив объектов:
console.log(phones.every(item => item.priceUAH <= 25000));
.sort() – сортирует массив как массив строк
.sort((a, b) => a.length – b.length); // – для массива строковых значений
a.sort((a, b) => a > b ? 1 : -1); – для строк
a.sort((a, b) => a – b); – сортирует как массив чисел
a.sort((a, b) => a.price – b.price); – для объектов
var sortBy = (a, b) => a > b ? 1 : -1;
.sort(sortBy)
> Перебор значений массива
phones.forEach(function(item, pos[, arr]){ // item – текущий эл-т, pos – тек. позиция, arr – сам массив
console.log(pos + 1, item.productName, arr);
a.forEach( (i, n, arr) => arr[n] = i + ‘a’ );
});
> Фильтр
var a = [45,67,84,23,45,78,40];
var f = a.filter(function (n){ // n – каждый эл-т массива
return n % 2 == 0; // условие фильтра
}); // рез-тат помещаем в новый массив
> Поиск
.find – ищет 1-й попавшийся, соотв. условию
arr.find((e)=>{return e==5})
> Объекты
let admin = {
name: “Eugene”,
age: 36,
isAdmin: true,
};
let user = admin;
user.name = “Andrey”;
> Клонирование объектов
admin = {
name: “Eugene”,
age: 36,
isAdmin: true,
};
user = {};
for(key in admin){
user[key] = admin[key];
}
var user = {
name:‘eee’,
age:37
};
var player = {};
for (key in user) {
player[key] = user [key];
}
> JSON
var player = JSON.parse(JSON.stringify(user));
var user = ‘{ “name”: “Вася”, “age”: 35, “isAdmin”: false, “friends”: [0,1,2,3] }’;
> Функции
var sum = new Function (‘a’, ‘b’, ‘return a + b’);
// все аргументы, кроме последнего – аргументы функции, последний аргумент – тело функции. Function с большой буквы.
eval(‘var x=5; var y=2; console.log(x+y)’); – js код находится в кавычках (работает только в браузере)
> стрелка-функция
var sum4 = (a, b) => a + b;
var pow = n => n*n;
var hello = () => ‘Hello, world’;
var sum5 = (a, b, c) => {
r = a + b;
r += c;
return r;
}
> Произвольное к-во аргументов
function sum () {
var r = 0;
for (var j = 0; j<arguments.length; j++) {
r += arguments[j];
}
return r;
}
function calc (…rest) { } // ..rest – массив данных
var arrTransition = (…rest) => {
for (var j = 0; j < rest.length; j++) {rest[j] = j%2==0 ? rest[j] = rest[j] + 1 : rest[j] = rest[j] -1;}
return rest;
}
> Вложенный вызов
function f(a) {
return function(b) {
return a + b;
}
}
console.log(f(5)(3));
> callback
function sum (a, b) {
return a + b;
}
function diff (a, b) {
return a – b;
}
function operation (a, b, action) {
return action (a, b);
}
console.log(operation(10, 2, sum));
console.log(operation (12, 5, (a, b) => a * b));
> Самовызывающаяся функция
(function() {} ) ()
или
; (function() {} ) () ;
или
(function {} () );
> Замыкание
setGlobals = (globalVariable) => {
return function(delta) {
globalVariable += delta;
console.log(globalVariable);
}
}
changeGlobals = setGlobals(5); // задаем исходное значение скрытой глобальной пер-ной
changeGlobals(10); // меняем значение
> Ссылки
document.location.href = “http://www…”; – переход по ссылке
document.location.replace(“http://www…”); – так, чтобы в истории браузера не осталась запись о текущей странице
location.reload(true) – перезагрузка страницы
window.open([URL, name, specs, replace])
> События
onmouseenter/onmouseleave – заход / выход на элемент. дочерние элементы игнорируются (при заходе на дочерний не генерируется mouseout для родителя).
window.onResize
scroll
document.load
document.DOMContentLoaded – все DOM-элементы разметки уже созданы, можно их искать, вешать обработчики, но при этом, возможно, ещё не догрузились какие-то картинки или стили.
object.removeEventListener(event, function, useCapture) !!! нельзя удалить обработчик, где функция передана анонимно!
event.type
event.target.tagName
event.currentTarget – Элемент, на котором сработал обработчик
event.clientX/clientY – Координаты курсора в момент клика (без учета прокрутки)
event.pageX/pageY – Координаты курсора в момент клика (с учетом прокрутки)
event.stopPropagation() – останавливает всплытие события
event.preventDefault() – отменяет действие по умолчанию (если обработчик назначен через on-событие (не через addEventListener), то можно просто вернуть false из обработчика
Метод addEventListener додає подію до об’єкту і вказує function яка буде виконуватися при виникнені події. Прицьому вказаній функції у параметрі function буде передаватися лише один параметр: об’єкт Event. Щоб передати параметр функції яку вказали в addEventListener потрібно у параметр function передати об’єкт в якому вказати handleEvent:функцію і необхідні параметри. Прицьому параметри не будуть доступні як параметри функції а як this.назва параметру
document.getElementById(“test2”).addEventListener(‘click’,{handleEvent:f, a:10, p:‘переданий “параметр”’});
> Смартфон
События: touchstart, touchend
touchmove
event.changedTouches0.pageX / pageY
touchenter – срабатывает когда касание происходит только в пределах выбранного элемента
touchleave – срабатывает когда точка соприкосновения выходит за пределы выбранного элемента
touchcancel – срабатывает когда точка соприкосновения вышла за пределы браузера.
http://vvz.nw.ru/Lessons/JavaScript/events.htm – список событий
> DOM
window.screen.availWidth (height) – физические размеры экрана (статичные)
window.innerWidth, window.innerHeight – размеры окна браузера
document.body
document.documentElement – секция
document.activeElement – эл-т на котором фокус
document.bgColor – цвет фона документа
document.cookie – позволяет читать и писать куки файлы
document.lastModified – дата последнего изменения документа
document.referrer – ссылка, которая привела на текущую страницу
document.title – содержимое тега title
document.forms – массив форм HTML документа
document.images – массив изображений HTML документа
document.links0.href – массив ссылок HTML документа
document.anchors – массив якорей (тегов c атрибутом name)
getElementsByName – по значению тега name
getElementsByTagName
querySelector
querySelectorAll
elem.matches(<селектор>) – проверяет эл-т на соответствие указанному селектору
.elem.closest(css) – ищет ближайший элемент выше по иерархии DOM, подходящий под CSS-селектор css. Сам элемент тоже включается в поиск
<img src = “1.jpg” onerror = “this.style.display = ‘none’”> – скрыть картинку, если не загружается
> Узлы документа
childNodes[i] – узлы документа
childNodes[i].nodeType – тип узла (1 – элемент; 2 – атрибут; 3- текстовый узел; 8 – коментарий; 9 – узел документа (document); 10 – декларация типа док-та (!doctype html…)
firstChild, lastChild
nextSibling, previousSibling
parentNode – родительский узел
объект Node:
.nodeValue
.nodeType
.nodeName
> Элементы документа
parentElement – родительский элемент
nextElementSibling, previousElementSibling
firstElementChild, lastElementChild
children
> Стили
getComputedStyle(element).backgroundColor – получить стиль, описанный в CSS
getComputedStyle(element[, pseudo])
element.getBoundingClientRect() – координаты и размеры элемента
let {left, top} = getComputedStyle(log); – присвоить соотв. свойства объекта нескольким переменным
const {pageX, pageY} = event;
el.style.cssText=“color: red” – задать стиль в виде строки
> Атрибуты
element.setAttribute(‘attribute’, ‘value’)
getAttribute
removeAttribute
el.getAttributeNode – возвр сам аттрибут, а не его значение: getAttributeNode(‘class’) > ‘class = “slider”’
> data – атрибуты
доступ:
el.getAttribute(“data-color”)
el.dataset.color
> Элементы
.createElement(“тег”)
.appendChild – добавить дочерний элемент
parentElem.insertBefore (<что добавить>, <перед чем добавить>) – добавить элемент перед указанным
.removeChild – удаление элемента
.replaceChild – замена одного элемента на другой
> Методы classList
elem.classList.contains(“class”) – возвращает true/false, в зависимости от того, есть ли у элемента класс class. elem.classList.add/remove(“class”) – добавляет/удаляет класс class elem.classList.toggle(“class”) – если класса class нет, добавляет его, если есть – удаляет.classList[i]
Element.classList.item()
Element.classList.length
Element.classList.toString()
Element.className
> Проверка поддержки браузером
CSS.supports(“display”, “flex”); /* true / false */
el.style[‘display’] – возвращает значение или undefined, если браузер не поодерживает данное css-свойство
> Размеры и прокрутка
window.pageXOffset/pageYOffset – текущая прокрутка страницы (смещение, r/o)
window.innerWidth/innerHeight – размеры видимой части vp, без учета полосы прокрутки
el.scrollLeft/scrollTop – текущая прокортка эл-та
el.scrollWidth/scrollHeight – разм. эл-та с учетом прокрутки
el.clientWidth/clientHeight – разм. эл-та
document.body.style.overflow = “hidden” – запрет прокрутки страницы
var scrollHeight = Math.max( // размеры страницы с учетом прокрутки
document.body.scrollHeight, document.documentElement.scrollHeight,
document.body.offsetHeight, document.documentElement.offsetHeight,
document.body.clientHeight, document.documentElement.clientHeight
);
window.scrollTo(pageX,pageY) – задать абсолютные координаты,
window.scrollBy(x,y) – прокрутить относительно текущего места.
elem.scrollIntoView(true/false) – прокрутить, чтобы элемент elem стал виден (true – вверху, по умолчанию; false – внизу)
> localStorage
localStorage.setItem(‘ключ’, ‘значение’)
localStorage.getItem(‘ключ’)
localStorage.removeItem(“Ключ”)
localStorage.clear()
> Формы
Доступ к элементам формы:
let form = document.forms.admin.elements;
form.elements – список эл-тов формы
.elements0
autofocus – атрибут, устанавливающий фокус
> Браузер
if (navigator.userAgent.search(“MSIE”) >= 0) {
//code goes here
}
else if (navigator.userAgent.search(“Chrome”) >= 0) {
//code goes here
}
else if (navigator.userAgent.search(“Firefox”) >= 0) {
//code goes here
}
else if (navigator.userAgent.search(“Safari”) >= 0 && navigator.userAgent.search(“Chrome”) < 0) {
//code goes here
}
else if (navigator.userAgent.search(“Opera”) >= 0) {
//code goes here
}
> отслеживание изменений свойства объекта
var oScope = { $privateScope:{}, notify:function(sPropertyPath) { console.log(sPropertyPath,“changed”); } }; Object.defineProperties(oScope, { myPropertyA: { get:function() { return oScope.$privateScope.myPropertyA }, set:function(oValue){ oScope.$privateScope.myPropertyA = oValue; oScope.notify(“myPropertyA”); } } }); oScope.myPropertyA = “Some Value”;