// ------------------------------------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('<<<', '>>>'); // <<>> // Реализуйте 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(){ // return user.format.call(user, '<<<','>>>'); // })() // ------------------------------------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: 50, // container: function(tag){ // return this.tag = tag; // }, // appendTo: function() { // $('<'+ this.tag + '>').css({ // margin: '0 auto', // background: '#000', // color: '#fff', // 'text-align': 'center' // }).appendTo('body'); // }, // appendText: function(val){ // $('').css('font-size', '15px').text(val).appendTo(this.tag); // } // }; // obj.container('div'); // obj.appendTo(); // for (i=0; i < arr.length; i++) { // (function() { // var j =i; // setTimeout(function() { // 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