Entony 7 anni fa
parent
commit
c61eb963b0
2 ha cambiato i file con 274 aggiunte e 0 eliminazioni
  1. 12 0
      14.08.2017/index.html
  2. 262 0
      14.08.2017/js/script.js

+ 12 - 0
14.08.2017/index.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>first task</title>
+</head>
+<body>
+	<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
+	<script src="js/script.js">
+	</script>
+</body>
+</html>

+ 262 - 0
14.08.2017/js/script.js

@@ -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