/*
*Complex.js
*定义了Complex类,用来描述复数
*复数是实数和虚数的和,并且虚数i是-1的平方根
*/
/*
*这个构造函数为它所创建的每个实例定义了实例字段r和i
*这两个字段分别用来保存实数的实部和虚部
*他们是对象的状态
*/
function Complex(real, imag){
if(isNaN(real) || isNaN(imag)) {
throw new TypeError();
}
this.r = real;
this.i = imag;
}
/*
*类的实例方法定义为原型对象的函数值属性
*这里定义的方法可以被所有的实例继承,并为他们提供共享的行为
*需要注意的是,javascript的实例方法必须使用关键字this
*来存取实例的字段
*/
Complex.prototype.toString = function(that) {
return "{"+this.r+","+this.i+"}";
};
/*
*类字段
*/
Complex.ZERO = new Complex(0,0);
Complex._format = /^\{([^,]+),([^}]+)\}$/;
/*
*类方法
*/
Complex.parse = function(s) {
try{
var m = Complex._format.exec(s);
return new Complex(parseFloat(m[1]),parseFloat(m[2]));
}catch(x){
}
}
var c = new Complex(2,3);
console.log(c);
console.log(Complex.parse(c.toString()));