JavaScript Flashcards
Что делает символ %
Определяет остаток от деления двух чисел - 12 % 5 = 2 // потому что 12 на 5 не делится. но можно поделить на 2. 5*2=10 и еще до 12 остается 2.
Зачем делать свой конструктор объекта
что бы было не 3 строки при создании объекта: var harry_potter = new Object(); harry_potter.pages = 350; harry_potter.author = "J.K. Rowling";
а 1: var the_hobbit = new Book(320, "J.R.R. Tolkien")
Что делает hasOwnProperty
возвращает ТРУ если у объекта есть свойства, указанные в аргументе этой функции
Для чего нужен прототип
prototype нужен для ООП, в случае если нету прямого доступа к коду, где создавался класс. Через прототип мы можем добавить метод к этому классу не меняя код самого класса:
className.prototype.newMethod = function() {
statements;
};
А еще можно создать новый класс на основе уже готового:
className.prototype = new oldClassName();
Если определить переменную через var в функции или классе, что произойдет?
нельзя будет получить эту переменную вне функции или класса
Как можно сократить такое выражение: if(a){ return a.member; }else{ return a; }
return a && a.member;
Что это означает: label : for( ; ; ) { if ( ) { break label; } }
Можно давать имена циклам, и обрывать их
Как задать цвет бекграунда элемента используя JS
ElementName.style.backgroundColor = “white”
Зачем в ХТМЛ-е давать ссылку на внешнюю js библиотеку, а не располагать ее у себя на хостинге
Мощные CDN сервера быстрее доставят библиотеку чем свой хостинг. + место экономится.
Еще важно что эти библиотеки много кто использует и обычно у юзеров они загружены в кеш браузера
+ есть лимит у браузеров на количество запросов с одного домена, а подключая библиотеку с внешних источников домен уже другой
Что такое “use strict”
По умолчанию JS выполняет код даже если там были незначительные ошибки. Включив этот мод браузер будет выдавать даже самые незначительные ошибки.
Что бы его включить, в начале скрипта нужно написать “use strict”;
Что делает строка return; в конце кода if
если условие выполнено - то вышестоящая функция останавливается
Почему можно не заканчивать строку точкой с запятой
JS автоиатически добавляет точку с запятой для каждой строки
Что будет если сравнить 2 строки “A” < “B”
Выдаст тру, потому что А стоит выше по алфавиту чем В
Как интерпретируется следующий код, помещеный внутри функции:
console.log(a); var a = 11;
var a;
console.log(a);
a=11;
И если вне функции была уже переменная “а”, то она затрется внутри функции и при ее выводе получим андефайнд.
зачем начинать свой скрипт с ;
если в скрипте который загружается перед нашим скриптом будет в конце пропущена ; то ошибки не будет, так как мы ставим эту ; в начале нашего
Как сразу запускать анонимную функцию
function(){ }() в конце добавляем 2 скобки
Где лучше объявить переменные, которые нужны только при выполнении циклов?
for (var i=0, newVar = SomeStuff ; i>10;i++) { }; Таким образом производительность будет максимальной
Если мы делаем конструктор и в нем будут методы, то как сделать так что бы эти методы не копировались каждый раз при создании нового объекта
Нужно описывать методы не в теле функции, а через прототипы
что такое document.createDocumentFragment()
Это временный объект, который можно создать и заполнять на пример при каждой итерации цикла, а по завершении всех циклов мы берем этот фрагмент и вставляем в DOM. В ином случае нам бы в каждом цикле нужно было бы вставлять в DOM, а каждая такая операция ресурсоемкая.
Как сделать модуль с приватными (которые можно вызвать только внутри функции) переменными?
var ARMORY = (function(){ var privateV = "some data"; var privateM = function(){ return "some private method" }
return { publicV : "some data", privateM = function(){} } }());
Таким образом ARMORY.privateV выдаст ошибку, а ARMORY.publicV выдаст “some data”
Подробнее в курсе “JavaScript Best Practices”
Как передать в модуль глобальные переменные, что бы их чтение было более быстрым
var GLOBALV = "some data"; var MODULE = (function(globV){ console.log(globV); }(GLOBALV));
Подробнее в курсе “JavaScript Best Practices”
Что такое augmentation в модульном JS
Это когда мы создаем в одном файле модуль, а в другом берем этот модуль и изменяем его, меняя его исходник
firstfile.js
var MODULE = (function(){ return { data : "not edited" } }());
seccondfile.js
var MODULE = (function(module){ module.data = "edited"
return module }(MODULE));
Подробнее в курсе “JavaScript Best Practices”
Как можно использовать “with”
var Class = function(){ with(this) { width = 100; } }
вместо этого
var Class = function(){ this.width = 100; }