JavaScript类中的“ SyntaxError:意外标识符”

时间:2019-04-08 16:25:20

标签: javascript javascript-objects

我的javascript类中有两个函数,其中一个函数在另一个函数中调用,我使用的参数与在其他编程语言中的用法相同。但这是丢我

  

“ SyntaxError:意外标识符”

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 个答案:

答案 0 :(得分:2)

您需要在类中定义方法。您还可能希望将它们定义为静态的,因为它们实际上并不依赖于任何实例状态。

class IpSubnetMatch {
    ip2longConvert(ip) {
        // ...
    }
    inSubNet(ip,subnet) {
        const long_ip = this.ip2longConvert(ip);
        // ...
    }
}

答案 1 :(得分:1)

关键字function是问题所在。从ECMA2015开始,您应该使用箭头功能。

答案 2 :(得分:1)

JavaScript中的类实际上并没有提供其他功能,通常被描述为在原型和继承上提供“语法糖”。 ES6类提供了更简洁,更优雅的语法。

class IpSubnetMatch {
    constructor() {

    }

    ip2longConvert(ip) {

    }

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

类方法在类语法中不使用 function 关键字。使用关键字引用方法或属性。