1

(11 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Є класна книжка - "Стоян Стефанов. Javascript. Шаблони". Там описано багато хороших практик Javascript. А також різні способи наслідування. На жаль українською такі книжки не перекладають. тільки англійська і російська. Може російською буде зрозуміліше.
http://сайт-злодій/doc10903696_1953535 … 71e3631562

А найпростіший код може бути таким:

function Book(book) {
  this.book = book;
  this.bookName = function() {
      return this.book;
  }
}

function Fantasy(book) {
  this.book = book;
  this.present = function() {
      return "The fantasy book *" + this.book + "* is present";
  }
}

Fantasy.prototype = new Book();

var obj = new Fantasy('AwesomeBook');

alert( obj.present() );

alert( obj.bookName() );

2

(25 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Анатолій написав:
taras_kotilok написав:

А браузер може взагалі не підтримувати javascript )   Такі речі стандартно реалізують на сервері. А javascript для зручності користувачів

Ну наскільки я розумію тему javascript, то вона виконується на стороні браузера, і таки її можна включати і відключати. І тоді всі перевірки правильності заповнення форм теж можна ігнорувати.
В такому випадку, варто перестрахуватися перевіркою форми вже на стороні сервера, це можна реалізувати за допомогою php. А то накидають добрі люди в базу даних пустих коментарів, чи іншого сміття.

Це не "перестрахуватися". Це єдино правильна і поширена техніка - все перевіряється на сервері. Дані які отримуються з клієнтської сторони завжди треба сприймати як небезпечні і перевіряти.

3

(25 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Анатолій написав:

:) і для ясельної групи перевірку форми на стороні сервера
щось на зразок, якщо поле "імя" та "коментар" пусте, то Службове повідомлення.
А то деякі розумні люди не включають чи навпаки вимикають  javascript і морочать голову веб-програмістам.

:D  *JOKINGLY*  *BRAVO*  :D  :D

А браузер може взагалі не підтримувати javascript )   Такі речі стандартно реалізують на сервері. А javascript для зручності користувачів

4

(4 відповідей, залишених у Обговорення)

Вчуся в НУ "ЛП", програмна інженерія, закінчив 2 курси. Програмна інженерія круче за КН. КН вивчає купу алгоритмів, комп'ютеризацію в загальному, має більш науковий підхід і т.д. ( детально не знаю, хай КНщики простять ). ПІ вивчає промисловий цикл виробництва програмного забезпечення - формулювання вимог, аналітику, проектування, власне програмування, тестування, моделювання. І на ПІ і на КН є базове та ще багато видів програмування. Але на практиці лекції з програмування і лабораторні роботи по ньому не навчать більшості речей, якщо сам не будеш вчитися то ніякий вуз програмістом не зробить.

P.S. Я сам також вибирав між ПІ і КН. Тоді ще не знав в чому різниця між ними. Взяв і тупо загуглив. На якомусь форумі  чувак написав "ПІ круче". От я і поступив )) Ще не пожалів...

5

(7 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

karmeljuk написав:

якщо подивитися уважно, то видно, що водяний знак з'являється при наведені, затримка секунда, можу навіть відео зняти. Тобто картинка насправді без нього, але при наведені скрипт накладає знак.

Це не скрипт накладає знак. Зазвичай скрипти і не можуть. Є 2 версії картинок - маленькі для попереднього перегляду і великі з водяним знаком, які з'являються при наведенні. Скрипт просто масштабує маленьку картинку (тому вона спочатку нечітка) і паралельно підвантажує на її місце більшу версію з водяним знаком, яка з'являється за мить. Може бути і третя, нормальна і велика версія, вже для платного скачування.

Напевне, неможливо безкощтовно скачати нормальні картинки без водяного знака. Сервер який віддає зображення можна дуже гнучко настроїти (наприклад Apache і його конфігураційний файл .htaccess). Можна зробити навіть щоб віддавати зображення лише по посиланнях з того сайту. А за зовнішніми запитами - ні. Можна генерувати тимчасовий хеш, по якому віддається зображення. І взагалі, картинка це лише ресурс, який віддає сервер. По запиту 'http/somedomain/image.jpg' може прийти аудіозапис, якщо сервер так захоче. А canstockphoto - серйозний сайт, думаю розробники перекрили майже всі можливості для халяви

6

(5 відповідей, залишених у HTML та CSS)

bunyk написав:

жс це JavaScript? Неа. Відповідь така:

#top {
    padding: 0; 
    float: left;
    width: 100%;
}
#main {
    padding: 0;
    height:100%;
}

Можна захардкодити потрібне співвідношення по висоті. Здається так це виглядало б

html {
    height: 100%; 
}

#top {
    width: 100%;
    height: 40%
}
#main {
    padding: 0;
    height:60%;
}

7

(25 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Ярослав написав:

Анатолій
Мені здається, що вигляд сторінки формується після того, як броузер опрацює всі файли, що підключені в документі + сам документ. В якій послідовності це відбувається я Вам не підкажу. Однак, на w3schools я читав, що JavaScript інтерпритатор переставляє всі оголошення змінних var element; вгору, перед тим як розбирати код і якщо десь всередині .js файлу зустрінеться var element = 2; то цей рядок розіб’ється на дві команди і вгорі файлу з’явиться рядок var element; а в місці ініціалізації залишиться тільки element = 2;

В Javascript є така особливість як "підняття змінних".  Нехай є код.

var x = 100;

function func1() {
    alert(x);
    var x = 10;
    alert(x);

};

func1();

Спочатку ми оголошуємо глобальну змінну x = 100. Тоді оголошуємо функцію.
Інтерпретатор javascript проходить код кілька разів, спочатку він шукає всі оголошення змінних

var x = 10;

і створює ці змінні у даній області видимості. А вже потім виконується код. Але при створенні інтерпретатор не записує в змінні значення. Присвоєння значення відбувається коли коли виконання скрипта дійде до місця, де записано це присвоєння.
У даному прикладі вивід буде таким: "undefined", "10". Cпочатку інтерпретатор у області видимості функції перевизначить глобальну змінну x. Тому перший вивід буде не 100 а undefined. Потім протягом виконання скрипта інтерпретатор дійде до присвоєння значення і після цього змінна х вже матиме значення і виведеться "10".
  Тому і виходить, що Javascript змінні "піднімаються вгору" у межах області видимості. Причому фігурні дужки, які позначають блок коду, не впливають на підняття змінних. Всі змінні, оголошені у тілі функції, "піднімаються" незалежно від структури коду до початку функції. Така поведінка характерна тільки для функцій і для глобальної області видимості.

8

(25 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

koza4okvasja написав:

Вибачайте, можливо пишу не в ту тему. Я початківець у програмуванні. Колись давніше мав справу з Паскалем, але лише вивчав ази. І тепер почав вчити код JavaScript на сайті codeacademy.com .Ці всі цикли масиви, але є одна проблема. Тут на сайті є компілятор. А от самому спробувати написати щось своє хочеться. А у якій програмі можна скомпілювати написане незнаю. Де б був результат програми. Порадьте де можна компілювати написаний у Javascript код.

Javascript код не компілюється а інтерпретується браузером. Можна створити простий html файлик і вставити туди скрипт.

<!DOCTYPE html>
<html>
    <head>
        <title>MyCode</title>
        <script src="path/to/myscript1.js"></script>
    </head>
    <body>
        <script src="path/to/myscript2.js"></script>
        <script>
            alert('Hello World!!');
        </script>
    </body>
</html>

  Можна підключити скрипт в <head> секції, але це погано, бо браузер зверху вниз проходить по порядку всі теги і коли він знаходить скрипт то призупиняє рендер сторінки поки не виконає скрипт. Тому якщо скрипт захоче доступитися до елементів з секції <body> то її по факту ще не буде.
  Гарним тоном є підключити скрипт перед закриваючим тегом <body>. Тоді на момент запуску скрипта вже будуть створені і поміщені на сторінку всі елементи.
  Ну і можна як задати шлях до скрипта так і вписати його прямо в коді.

Також у сучасних браузерах є така штука як консоль розробника. Викликається Ctrl+Shift+I. Там можна подивитись на фактичну структуру DOM, яку сформував браузер, вставити і редагувати елементи, подивитись на мережеві запити. Ну і там є власне консоль, куди можна вписати код і він одразу виконається.

А для вивчення Javascript ідеально підходить сайт http://learn.javascript.ru/. Він хоч і російськомовний, але там все дуже детально описано, є живі приклади коду, задачі.

9

(9 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Онлайн сервіс для перевірки javascript коду, виводить помилки і попередження, можна гнучко налаштовувати що саме перевіряти.
http://www.jslint.com/

10

(17 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Коли браузер парсить HTML сторінку то він поступово читає всі теги від початку і промальовує сторінку. А коли натрапляє на тег <script> то зупиняє промальовувати сторінку поки не виконає javascript код. І може таке бути, що код виконується, шукає елементи, а DOM елементів фактично ще ж немає.

Тут скрипт підключений у <head> секції.

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
</head>

Коли браузер його виконує, то він ще і не брався за тег <body> з усім вмістом сторінки, сторінка просто порожня. Тому хорошою практикою є розміщувати скрипти перед закриваючим тегом </body>. Браузер сформує DOM а тоді візьметься за скрипти. І навіть тоді може ще довантажуватися якийсь контент, наприклад <img> тег вже вставлений на сторінку, а картинка у ньому ще завантажується. Можна прослуховувати window.onload івент, який спрацьовує коли вся сторінка повністю завантажена.

11

(3 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Я junior девелопер, працюю з AngularJS. Класний фреймворк. Він призначений для написання повноцінних Single Page Application (односторінкових сайтів, де всі сторінки і дані рендерить javascript). Якщо треба додати трохи інтерактиву в html, реалізувати підвантаження через AJAX або зробити один віджет, то краще підійде jQuery. Angular підтримує кастомні html теги і сам зв'язує javascript змінні з DOM елементами. Міняєш змінну в коді - міняється напис на екрані, просто і класно, frontend пишеться швидко.  Плюс це повноцінний MVC фреймворк. Мінус - продуктивність. Angular постійно проганяє великий цикл щоб перевірити і синхронізувати дані і DOM. На середніх застосуваннях працює добре, але при великій кількості зв'язувань починає пригальмовувати. Потрібно розумно писати код.

12

(5 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

FakiNyan написав:
     for(var i=0; i<elem.length; i++)
     {
     var height = elem[i].getElementsByTagName("li").length*37;
     console.log(i);
     elem[i].style.transition = ".5s 0 all ease";
     elem[i].addEventListener("mouseover",function(){elem[i].style.height = height+"px";});
     elem[i].addEventListener("mouseout", function(){elem[i].style.height = "42px";});
    };

В Javascript є замикання. В циклі змінна і міняється від 0 до elem.length. А оскільки в коді обробників

     elem[i].addEventListener("mouseover",function(){elem[i].style.height = height+"px";});
     elem[i].addEventListener("mouseout", function(){elem[i].style.height = "42px";})

ця змінна використовується, то вона нікуди не зникає після виконання коду, а "прив'язується" до функцій-обробників, причому прив'язується до всіх обробників одна і та ж змінна. Після виконання коду вона рівна elem.length -1 і тому у всіх callback'ах код 

 elem[i].style.height 

по факту стає таким:

 elem[elem.length-1].style.height 

і тому міняється тільки останній елемент.