top of page

7 Занятие javascript

  • Рома
  • 12 февр. 2018 г.
  • 2 мин. чтения

Задание №1. Привязка контекста Есть следующий код: Привяжите функцию format() к объекту user. Реализуйте 2 версии текущего задания, используя: 1. Анонимную функцию обвертку; 2. Метод bind().

var user = { name: "Tom" }; function format(beginMsg, endMsg) { console.log(beginMsg + this.name + endMsg); } //var tomFormat = format.bind(user);// Ваш код var tomFormat = function() {format.call(user,"<<<", ">>>")}; tomFormat("<<<", ">>>"); // "<<<Tom>>>"

Задание №2. Привязка контекста Есть следующий код: Используя функцию mul() и карринг создайте две функции doubleMul() и qadraMul(), которые умножают числа на 2 и на 4 соответственно.

  • function mul(a, b) {

  • return a * b;

  • }

  • var doubleMul = mul.bind(null, 2);// Ваш код

  • var qudraMul = mul.bind(null, 4);// Ваш код

  • console.log(doubleMul(5)); // 10

  • console.log(qudraMul(5));

Задание №3. Привязка контекста Напишите аналог метода bind():

  • function bind(func, context) {

  • return function() { // learnjs

  • return func.apply(context, arguments);

  • };

  • }

  • function func() {

  • console.log(this.name + " - "+ this.age);

  • }

  • var user = {

  • name: "Tom",

  • age: 20

  • };

  • var f = bind(func, user);

  • f(); // "Tom – 20"

Задание №4. Инкапсуляция Напишите конструктор для объектов Аудиоплеер, в котором есть приватное свойство громкость звука, для доступа к этому свойству реализуйте: 1. Методы геттер и сеттер; 2. Единый метод геттер-сеттер.

Громкость может быть в диапазоне от 0 до 100.

  • function Audioplay(volume){

  • var _volume = 0;

  • function validVolume(volume){

  • if (volume>=0 && volume<=100){

  • _volume = volume;

  • }

  • }

  • validVolume(volume);

  • /*this.getVolume = function(){

  • return _volume;

  • }

  • this.setVolume = function(volume){

  • validVolume(volume);

  • }*/

  • this.getSetVolume = function (volume){

  • if (volume === undefined){

  • return _volume;

  • }

  • else validVolume(volume);

  • }

  • }

  • var audio = new Audioplay(3);

  • console.log(audio.getSetVolume());

  • audio.getSetVolume(5);

  • console.log(audio.getSetVolume());

  • audio.getSetVolume(99);

  • console.log(audio.getSetVolume());

Задание №5. Инкапсуляция Напишите конструктор для объектов Сумматор, со следующим функционалом: 1. Приватное свойство firstNumber; 2. Приватное свойство secondNumber; 3. Публичное свойство result; 4. Приватный метод calc(), который записывает в result сумму свойств firstNumber и secondNumber; 5. Единые методы геттер-сеттер для свойств firstNumber и secondNumber, во время работы методов как сеттер, должна происходить валидация (устанавливать можно только значения типа Number), если валидация происходит успешно, должен вызываться метод calc(). Получается, что при успешной установке либо firstNumber либо secondNumber, происходит перерасчет result.

  • function Summator(){

  • var _firstNumber = 0;

  • var _secondNumber = 0;

  • this.result = 0;

  • function validNumber(firstNumber, secondNumber){

  • if (typeof (firstNumber) === "number"){

  • _firstNumber = firstNumber;

  • }

  • if (typeof (secondNumber) === "number"){

  • _secondNumber = secondNumber;

  • }

  • }

  • function calc(firstNumber,secondNumber){

  • return result = _firstNumber + _secondNumber;

  • }

  • this.setGetSum = function(firstNumber,secondNumber){

  • if (firstNumber === undefined && secondNumber === undefined){

  • return result;

  • }

  • else{

  • validNumber(firstNumber, secondNumber);

  • return calc(_firstNumber, _secondNumber);

  • }

  • }

  • }

  • var sum = new Summator();

  • console.log(sum.setGetSum(4,5));

 
 
 

Comments


© 2015 Все права защищены

bottom of page