Показать сообщение отдельно
  #57 (permalink)  
Старый 23.07.2015, 10:22
Новичок на форуме
Отправить личное сообщение для Gaito Посмотреть профиль Найти все сообщения от Gaito
 
Регистрация: 23.07.2015
Сообщений: 1

Какая старая статья... И всё же хочется кое-что сказать.
Во-первых JavaScript не класс-ориентированный язык программирования а прототипный (что это значит можно почитать на вики) и соответственно практики из класс-ориентированного ООП в принципе не совсем для него подходят, хотя если вам нужен некий аналог интерфейса, то могу предложить следующее решение:

// интерфейс
var interfaceA = {
  methodA: methodForMatchAPlusB,
  methodB: methodForMatchAMinusB,
  methodC: methodC
};

// основной код
console.info('a + b = %d', interfaceA.methodA(1, 2));
console.info('a - b = %d', interfaceA.methodB(7, 5));
interfaceA.methodC(7, 4);

//объявление функций
function methodForMatchAPlusB(a, b) {
  return a+b;
}

function methodForMatchAMinusB(a, b) {
  return a - b;
}

function methodC(a, b) {
  var result = interfaceA.methodA(a, b) * interfaceA.methodB(a, b);
  console.info('(a+b)*(a-b) = %d', result);
}


Или можно тоже самое оформить ещё лучше:

var objectA = new function() {
  // интерфейс
  this.methodA = methodForMatchAPlusB;
  this.methodB = methodForMatchAMinusB;
  this.methodC = methodC;


  //объявление функций
  function methodForMatchAPlusB(a, b) {
    return a+b;
  }

  function methodForMatchAMinusB(a, b) {
    return a - b;
  }

  function methodC(a, b) {
    var result = objectA.methodA(a, b) * objectA.methodB(a, b);
    console.info('(a+b)*(a-b) = %d', result);
  }
};


// основной код (возможно уже в другом файле)
console.info('a + b = %d', objectA.methodA(1, 2));
console.info('a - b = %d', objectA.methodB(7, 5));
objectA.methodC(7, 4);
Ответить с цитированием