«SyntaxError: неожиданный идентификатор» в классе javascript - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть две функции в моем классе javascript, где одна функция вызывается в другой функции, я использовал параметр, который я использую в другом языке программирования.Но это бросает меня

"Синтаксическая ошибка: неожиданный идентификатор"

class IpSubnetMatch {


 function ip2longConvert(ip)
  {
  var components;
  if(components = ip.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/))
  {
    var iplong = 0;
    var power = 1;
    for(var i=4; i>=1;i--)
      {
        iplong += power * parseInt(components[i]);
        power *= 256;
      }
    return iplong;
  }
  else return -1;
}

function inSubNet(ip,subnet)
{
  var mask, base_ip;
  var long_ip = ip2longConvert(ip);
  if((mask = subnet.match(/^(.*?)\/(\d{1,2})$/)) && ((base_ip = ip2longConvert(mask[1])) >= 0))
    {
      var freedom = Math.pow(2,32 - parseInt(mask[2]));
      return(long_ip > base_ip) && (long_ip < base_ip + freedom -1);
    }
  else return false;
}
}

let user = new IpSubnetMatch();
user.inSubNet('10.1.5.5', '10.1.0.0/16');

Ответы [ 3 ]

2 голосов
/ 08 апреля 2019

Вам необходимо определить методы в классе. Вы также можете определить их как статические, так как они действительно не зависят от состояния экземпляра.

class IpSubnetMatch {
    ip2longConvert(ip) {
        // ...
    }
    inSubNet(ip,subnet) {
        const long_ip = this.ip2longConvert(ip);
        // ...
    }
}
1 голос
/ 08 апреля 2019

Классы в JavaScript на самом деле не предлагают дополнительных функций и часто описываются как обеспечивающие "синтаксический сахар" по прототипам и наследованию.Классы ES6 предлагают более чистый и элегантный синтаксис.

class IpSubnetMatch {
    constructor() {

    }

    ip2longConvert(ip) {

    }

    inSubNet(ip,subnet) {
       //Call methods using this keyword.
       this.ip2longConvert(ip);   
    }
}

Методы класса не используют ключевое слово function в синтаксисе класса.Используйте это ключевое слово для ссылки на методы или свойства.

1 голос
/ 08 апреля 2019

Ключевое слово function является проблемой. Начиная с ECMA2015 вы должны использовать функции стрелок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...