[Exam] Advanced JS - 21 Февруари 2016 - решения, впечатления, резултати
Както винаги аз съм най-нетърпелива и поствам първа впечатленията си от изпита.
Този път за разлика от последните ми 3-4 явявания на изпит, съм доволна. По принцип си го обичам ООП.
Условието беше написано подробно и ясно, като за такива разсеяни, като мен :) Видя ми се и по-лесен от предишния изпит от 27.Март.2015.
Това ми е решението- включително написах и допълнителната задача за бонус точките.
Напавих copy-paste на един изпит решен от Наков-Estates. Валидациите ги копирах също от там, но с малки поправки и добавки, да ми вършат работа за конкретния изпит. Валидациите съм ги сложила в extensions.js, дано не съм сбъркала. Ето от къде преписвах:
https://github.com/EBojilova/JavaScriptAdvanced/blob/master/Demos-Homeworks-Exams/Exams/Estates/Estates-Solution-In-Class/Estates.js
Най-често натисках клавишите Ctrl+R :)
Това, което единствено не направих, е проверката за абстрактния клас. Хвърляше ми грешка и просто я закоментирах. Нея трябва да я оправя, но накрая вече виждах замрежено и реших, да си ходя :)
Решението е във вида в който съм го предала на изпита. Всякакви мнения са добре дошли.
Ами грешното е че по този начин нямаш сетър с валидации, докато в условието изрично пише, че е нужен такъв. При твоят вариант сетваш каквото ти подадат без никаква проверка (едит: всъщност виждам, че има проверки по-горе - така имаш някакви валидации, но пък нямаш възможност по никакъв начин да модифицираш вече вкарани данни), което не е ОК. Освен това и гетъра и сетъра трябваше да се закачат към прототипа на "класа", докато ти си сложил всичко в конструктора, което излишно дуплицира всички гетъри.
Ако разбрах правилно въпроса : )
Проблема е, че не минаваш през валидация в сетъра, а в конструктора.
Другия проблем, който имаш е, че при всяка инстанция на круса ще създаваш нова функция за гетъра, докато ако е закачена към прототипа, тя ще се преизползва- имаше едно демо към стари инстанции на курса, точно по този въпрос- погледни линка отдолу:
this.getName = function getName() {
return this._name;};
И гетъра и сетъра е хубаво да са закачени към прототипа, за да се преизползват от следващите инстанции.
https://github.com/EBojilova/JavaScriptAdvanced/blob/master/Demos-Homeworks-Exams/3.%20How-to-Simulate-OOP-in-JavaScript/04.%20different-method-instances.js