123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- // ------------------------------------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(){
- // 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){
- // $('<i>').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
|