|
@@ -0,0 +1,262 @@
|
|
|
|
+// ------------------------------------1------------------------------------------
|
|
|
|
+// Создайте объект calculator с методами:
|
|
|
|
+// read() запрашивает prompt для двух значений и сохраняет их как свойства объекта x, y
|
|
|
|
+// sum() возвращает сумму этих двух значений
|
|
|
|
+// multi() возвращает произведение этих двух значений
|
|
|
|
+// diff() возвращает разницу
|
|
|
|
+// div() возвращает частное
|
|
|
|
+// оценочное время 60 мин
|
|
|
|
+// Потраченное время 15 мин
|
|
|
|
+// var calculator = {
|
|
|
|
+// x: '',
|
|
|
|
+// y: '',
|
|
|
|
+// getread: function() {
|
|
|
|
+// return this.x = +prompt('Enter x'), this.y = +prompt('Enter y');
|
|
|
|
+// },
|
|
|
|
+// getsum: function() {
|
|
|
|
+// return this.x + this.y;
|
|
|
|
+// },
|
|
|
|
+// getmulti: function() {
|
|
|
|
+// return this.x * this.y;
|
|
|
|
+// },
|
|
|
|
+// getdiff: function() {
|
|
|
|
+// return this.x - this.y;
|
|
|
|
+// },
|
|
|
|
+// getdiv: function() {
|
|
|
|
+// return this.x / this.y;
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// calculator.getread();
|
|
|
|
+// alert( calculator.getsum() );
|
|
|
|
+// alert( calculator.getmulti() );
|
|
|
|
+// alert( calculator.getdiff() );
|
|
|
|
+// alert( calculator.getdiv() );
|
|
|
|
+
|
|
|
|
+// ------------------------------------2------------------------------------------
|
|
|
|
+// Создайте объект coffeeMachine со свойством message: ‘Your coffee is ready!’
|
|
|
|
+// и методом start(), при вызове которого – coffeeMachine.start() –
|
|
|
|
+// через 3 секунды появляется окно с сообщением, записанным в свойстве объекта message.
|
|
|
|
+// оценочное время 60 мин
|
|
|
|
+// Потраченное время 15 мин
|
|
|
|
+
|
|
|
|
+// var coffeeMachine = {
|
|
|
|
+// mss: 'Your coffee is ready!',
|
|
|
|
+// getstart: function() {
|
|
|
|
+// return setTimeout(function(){
|
|
|
|
+// alert(this.mss);
|
|
|
|
+// }.bind(this), 3000)
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// coffeeMachine.getstart();
|
|
|
|
+
|
|
|
|
+// ------------------------------------3------------------------------------------
|
|
|
|
+// Создайте объект counter с методами увеличения, уменьшения значения счетчика
|
|
|
|
+// и методом возврата текущего значения. Используйте концепцию chaining для создания цепочки вызовов.
|
|
|
|
+// оценочное время 60 мин
|
|
|
|
+// Потраченное время 10 мин
|
|
|
|
+// var counter = {
|
|
|
|
+// count: 0,
|
|
|
|
+// getplus: function() {
|
|
|
|
+// this.count++;
|
|
|
|
+// return this;
|
|
|
|
+// },
|
|
|
|
+// getminus: function() {
|
|
|
|
+// this.count--;
|
|
|
|
+// return this;
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// counter.getplus().getplus().getplus().getplus().getplus().getminus().getminus();
|
|
|
|
+// alert(counter.count);
|
|
|
|
+
|
|
|
|
+// ------------------------------------4------------------------------------------
|
|
|
|
+// Создайте объект с данными: x, y и методами: getSum, getDiff, getMulti, getDiv.
|
|
|
|
+// Методы объекта ничего не реализуют, а только выводят в alert сообщения вида ‘1 + 1 = 2’ или ‘1 / 0 = Infinity’.
|
|
|
|
+// Для расчетов все методы используют функционал ранее созданного калькулятора.
|
|
|
|
+// оценочное время 60 мин
|
|
|
|
+// Потраченное время 300 мин
|
|
|
|
+// var calculator = {
|
|
|
|
+// x: '',
|
|
|
|
+// y: '',
|
|
|
|
+// getread: function() {
|
|
|
|
+// return this.x = +prompt('Enter x'), this.y = +prompt('Enter y');
|
|
|
|
+// },
|
|
|
|
+// getsum: function() {
|
|
|
|
+// return this.x + this.y;
|
|
|
|
+// },
|
|
|
|
+// getmulti: function() {
|
|
|
|
+// return this.x * this.y;
|
|
|
|
+// },
|
|
|
|
+// getdiff: function() {
|
|
|
|
+// return this.x - this.y;
|
|
|
|
+// },
|
|
|
|
+// getdiv: function() {
|
|
|
|
+// return this.x / this.y;
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// var objdata = {
|
|
|
|
+// getsum: function(a, b) {
|
|
|
|
+// calculator.x = a,
|
|
|
|
+// calculator.y = b,
|
|
|
|
+// alert( a + ' + ' + b +' = ' + calculator.getsum());
|
|
|
|
+// },
|
|
|
|
+// getmulti: function(a, b) {
|
|
|
|
+// calculator.x = a,
|
|
|
|
+// calculator.y = b,
|
|
|
|
+// alert(a + ' * ' + b +' = ' + calculator.getmulti());
|
|
|
|
+// },
|
|
|
|
+// getdiff: function(a, b) {
|
|
|
|
+// calculator.x = a,
|
|
|
|
+// calculator.y = b,
|
|
|
|
+// alert(a + ' - ' + b +' = ' + calculator.getdiff());
|
|
|
|
+// },
|
|
|
|
+// getdiv: function(a, b) {
|
|
|
|
+// calculator.x = a,
|
|
|
|
+// calculator.y = b,
|
|
|
|
+// alert(a + ' / ' + b +' = ' + calculator.getdiv());
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// objdata.getsum(1, 3);
|
|
|
|
+// objdata.getdiv(3, 5);
|
|
|
|
+
|
|
|
|
+// ------------------------------------5------------------------------------------
|
|
|
|
+// Есть следующий код:
|
|
|
|
+// Допишите код, чтобы в консоли браузера появились строки, которые написаны в комментариях:
|
|
|
|
+// format.call(/* Ваш код */); // Ukraine
|
|
|
|
+// format.apply(/* Ваш код */); // [Ukraine]
|
|
|
|
+// format.call(/* Ваш код */); // Kyiv
|
|
|
|
+// format.apply(/* Ваш код */); // Kyiv
|
|
|
|
+// format.apply(/* Ваш код */); // undefined
|
|
|
|
+// оценочное время 60 мин
|
|
|
|
+// Потраченное время 30 мин
|
|
|
|
+// var country = {
|
|
|
|
+// name: 'Ukraine',
|
|
|
|
+// language: 'ukrainian',
|
|
|
|
+// capital: {
|
|
|
|
+// name: 'Kyiv',
|
|
|
|
+// population: 2907817,
|
|
|
|
+// area: 847.66
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// function format(start, end) {
|
|
|
|
+// console.log(start + this.name + end);
|
|
|
|
+// }
|
|
|
|
+// format.call(country, ' ', ' '); // Ukraine
|
|
|
|
+// format.apply(country,['[', ']']); // [Ukraine]
|
|
|
|
+// format.call(country.capital, ' ', ' '); // Kyiv
|
|
|
|
+// format.apply(country.capital,[' ', ' ']); // Kyiv
|
|
|
|
+// format.apply(undefined, ['undefined', ' ']); // undefined
|
|
|
|
+
|
|
|
|
+// ------------------------------------6------------------------------------------
|
|
|
|
+// Создайте объект user с полем name. Создайте функцию format с параметрами start и end:
|
|
|
|
+// Привяжите функцию format() к объекту user таким образом, чтобы ее вызов возвращал отформатированное имя пользователя
|
|
|
|
+// userFormat('<<<', '>>>'); // <<<John>>>
|
|
|
|
+// Реализуйте 2 версии текущего задания, используя:
|
|
|
|
+// 1. Анонимную функцию;
|
|
|
|
+// 2. Метод bind().
|
|
|
|
+// оценочное время 120 мин
|
|
|
|
+// Потраченное время 30 мин
|
|
|
|
+// var user = {
|
|
|
|
+// name: 'Tony',
|
|
|
|
+// format: function(start, end) {
|
|
|
|
+// console.log(start + this.name + end);
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// user.format('<<<', '>>>');
|
|
|
|
+
|
|
|
|
+// var nwf = user.format.bind(user);
|
|
|
|
+// nwf('<<<', '>>>');
|
|
|
|
+
|
|
|
|
+// var nwaf = (function(start, name, end){
|
|
|
|
+// return console.log(start + name + end);
|
|
|
|
+// })('<<<', user.name, '>>>')
|
|
|
|
+
|
|
|
|
+// ------------------------------------7------------------------------------------
|
|
|
|
+// Напишите функцию concat, которая соединяет две строки, разделенные каким-то символом:
|
|
|
|
+// разделитель и строки передаются в параметрах функции. Используя карринг, создайте новую функцию hello,
|
|
|
|
+// которая которая выводит приветствие тому, кто передан в ее параметре:
|
|
|
|
+// hello('World'); // Hello World
|
|
|
|
+// hello('John'); // Hello John
|
|
|
|
+// оценочное время 30 мин
|
|
|
|
+// Потраченное время 10 мин
|
|
|
|
+// function concat(firstV, delimiter, secondV) {
|
|
|
|
+// return console.log(firstV + delimiter + secondV);
|
|
|
|
+// }
|
|
|
|
+// var hello = concat.bind(null, 'Hello', ' ');
|
|
|
|
+// hello('World');
|
|
|
|
+// hello('John');
|
|
|
|
+
|
|
|
|
+// ------------------------------------8------------------------------------------
|
|
|
|
+// Создайте объект со свойством delay и методами appendTo и appendText.
|
|
|
|
+// Метод appendTo с помощью jQuery добавляет абзац в контейнер, переданный в параметре метода.
|
|
|
|
+// Метод appendText может дописывает текст в добавленный элемент. Создайте массив строк и запустите цикл по этому массиву.
|
|
|
|
+// С периодичностью, определенной в свойстве delay, в текст созданного html-элемента добавляется соответствующий
|
|
|
|
+// по порядку элемент массива. Учтите, что для доступа к вашему элементу не должен производиться поиск по DOM-дереву.
|
|
|
|
+// оценочное время 120 мин
|
|
|
|
+// Потраченное время 240 мин
|
|
|
|
+// var arr = [ 'Д','ь','я','в','о','л','','н','е','','с','п','и','т','.','','С','','к','е','м','','п','о','п','а','л','о','.'];
|
|
|
|
+// var obj = {
|
|
|
|
+// delay: 500,
|
|
|
|
+// container: function(tag){
|
|
|
|
+// return this.tag = tag;
|
|
|
|
+// },
|
|
|
|
+// appendTo: function() {
|
|
|
|
+// $('<'+ this.tag + '>').css({
|
|
|
|
+// display: 'flex',
|
|
|
|
+// 'justify-content': 'center'
|
|
|
|
+// }).appendTo('body');
|
|
|
|
+// },
|
|
|
|
+// appendText: function(val){
|
|
|
|
+// $('<p>').text(val).appendTo(this.tag);
|
|
|
|
+// },
|
|
|
|
+// appendText1: function(val){
|
|
|
|
+// $('<p>').css('padding-right', '5px').text(val).appendTo(this.tag);
|
|
|
|
+// }
|
|
|
|
+// };
|
|
|
|
+// obj.container('div');
|
|
|
|
+// obj.appendTo();
|
|
|
|
+// for (i=0; i < arr.length; i++) {
|
|
|
|
+// (function() {
|
|
|
|
+// var j =i;
|
|
|
|
+// setTimeout(function() {
|
|
|
|
+// if (arr[j] === '') {
|
|
|
|
+// obj.appendText1(arr[j]);
|
|
|
|
+// } else
|
|
|
|
+// obj.appendText(arr[j]);
|
|
|
|
+// }, i * obj.delay);
|
|
|
|
+// })();
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// ------------------------------------рекурсия 1------------------------------------------
|
|
|
|
+// Напишите функцию, которая возвращает куб переданного числа, аналог Math.pow(x, 3)
|
|
|
|
+// – a) используя цикл b) используя рекурсию:
|
|
|
|
+// console.log( cube(2) ); // 8
|
|
|
|
+// оценочное время 240 мин
|
|
|
|
+// Потраченное время 30 мин
|
|
|
|
+// function cube(x) {
|
|
|
|
+// for (var i=0, result=1; i<3 ; i++) {
|
|
|
|
+// result = result * x;
|
|
|
|
+// }
|
|
|
|
+// return result;
|
|
|
|
+// }
|
|
|
|
+// console.log( cube(2) ); // 8
|
|
|
|
+
|
|
|
|
+// function rcube(x, count) {
|
|
|
|
+// if (count != 1) {
|
|
|
|
+// return x * rcube(x, count-1);
|
|
|
|
+// } else
|
|
|
|
+// return x;
|
|
|
|
+// }
|
|
|
|
+// console.log( rcube(2, 3) ); // 8
|
|
|
|
+
|
|
|
|
+// ------------------------------------рекурсия 2------------------------------------------
|
|
|
|
+// Придумайте алгоритм расчета суммы всех фактических параметров функции с использованием только рекурсии:
|
|
|
|
+// console.log( sum(1, 2, 3, 4, 5) ); // 15
|
|
|
|
+// оценочное время 240 мин
|
|
|
|
+// Потраченное время 30 мин
|
|
|
|
+// function sum() {
|
|
|
|
+// var arr=arguments[arguments.length-1];
|
|
|
|
+// arguments.length--;
|
|
|
|
+// if (arguments.length > 0) arr += sum.apply(null, arguments);
|
|
|
|
+// return arr;
|
|
|
|
+// }
|
|
|
|
+// console.log( sum(1, 2, 3, 4, 5) ); // 15
|