我的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 回答

当年话下
TA贡献1890条经验 获得超9个赞
您需要在类中定义方法。您可能还想将它们定义为静态的,因为它们实际上并不依赖于任何实例状态。
class IpSubnetMatch {
ip2longConvert(ip) {
// ...
}
inSubNet(ip,subnet) {
const long_ip = this.ip2longConvert(ip);
// ...
}
}

青春有我
TA贡献1784条经验 获得超8个赞
JavaScript中的类实际上并没有提供其他功能,通常被描述为在原型和继承上提供“语法糖”。ES6类提供了一种更简洁,更优雅的语法。
class IpSubnetMatch {
constructor() {
}
ip2longConvert(ip) {
}
inSubNet(ip,subnet) {
//Call methods using this keyword.
this.ip2longConvert(ip);
}
}
类方法在类语法中不使用function关键字。使用此关键字来引用方法或属性。
添加回答
举报
0/150
提交
取消