JavaScript复数类创建(转自JavaScript权威指南)

来源:互联网 发布:ug creo 编程 编辑:程序博客网 时间:2024/05/18 01:57
/*
 *Complex.js: *这个文件定义了Complex类,用来描述复数*//* *这个构造函数为它所创建的每个实例定义了实例字段r和i *这两个字段分别保存负数的实部和虚部 *他们是对象的状态*/function Complex(real, imaginary){if(isNaN(real) || isNaN(imaginary)){  //确保两个实参都是数字throw new TypeError();           //如果不都是数字,则抛出错误}this.r = real;this.i = imagnary;}/* *类的实例方法定义为原型对象的函数值属性 *这里定义的方法可以被所有实例继承,并为他们提供共享的行为 *需注意,JavaScript的实例方法必须使用关键字this来存取实例的字段*///当前复数对象加上另外一个复数,并返回一个新的计算和值后的复数对象Complex.prototype.add = function(that){return new Complex(this.r + that.r, this.i + that.i);};//当前复数乘以另外一个复数,并返回一个新的计算乘积之后的复数对象Complex.prototype.mul = function(that){return new Complex(this.r*that.r - this.i*that.i, this.r*that.i + this.i*that.r);};//计算复数的模,复数的模定义为原点(0,0)到复平面的距离Complex.prototype.mag = function(){return Math.sqrt(this.r*this.r + this.i*this.i);};//将复数对象转化为一个字符串Complex.prototype.toString = function(){return "{" + this.r + "," + this.i + "}";};//检查当前复数对象是否和另外一个复数值相等Complex.prototype.equals = function(that){return that != null &&                    //必须有定义且不为nullthat.constructor === Complex &&           //并且必须是Complex实例this.r === that.r && this.i === that.i;   //并且必须包含相同的值};/* *类字段(比如常量)和类方法直接定义为构造函数的属性 *需要注意的是,类方法通常不使用关键字this *他们只对其参数进行操作*///这里预定义了一些对复数运算有帮助的类字段,他们的命名全是大写,用以表明它们是常量Complex.ZERO = new Complex(0,0);Complex.ONE = new Complex(1,0);Complex.I = new Complex(0,1);//这个类方法将由实例对象的toString方法返回的字符串格式解析为一个Complex对象或者抛出一个异常Complex.parse = function(s){try{    //假设解析成功var m = Complex._format.exec(s);  //利用正则表达式进行匹配return new Complex(parseFloat(m[1]), parseFloat(m[2]));}catch(x){   //如果解析失败则抛出异常throw new TypeError("Can't parse '" + s + "' as a complex number.");  }};//定义类的“私有”字段,这个字段在Complex.parse()中用到//下划线前缀表明它是类内部使用的,而不属于类的共有API的部分Comple._format = /^\{([^,]+), ([^}]+)\}$/;//返回当前复数的共轭复数Complex.prototype.conj = function(){return new Complex(this.r, -this.i);};
                                             
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩又咳又喘怎么办 宝宝有点吼和喘怎么办 气管里呛了辣油怎么办 玩手机手抖该怎么办 紧张到手抖做不了事该怎么办 做什么事手抖怎么办啊 跳舞时不会提气怎么办 啤酒喝多了手抖怎么办 头撞了一下头疼怎么办 头撞了个包怎么办 狗狗尿血不吃药怎么办 手机点击全选文字消失了怎么办 dnf数据异常无故被制裁怎么办 手机wifj连不上去怎么办 手机wifi显示不可上网怎么办 慢性肾炎感冒了血尿了怎么办 连接不可用红叉怎么办 鼻咽癌放疗后失去味觉怎么办 感冒会引起肾疼怎么办 iga患者老被传染感冒怎么办 iga肾病感冒了要怎么办 感冒了腰特别疼怎么办 运动后头晕恶心想吐怎么办 3岁儿童自闭症无语言怎么办? 2岁智力发育迟缓怎么办 法国第一年语言没有通过怎么办 听力42天未通过怎么办 7岁儿童叛逆期怎么办 被忽视型幼儿该怎么办 言语发育障碍脑神经损伤怎么办 5岁幼儿胆子小怎么办 幼儿20天胆子小怎么办 两岁宝宝胆子小怎么办 两岁的宝宝胆子小怎么办 孕中期发烧38度怎么办 小班社会交往教案有垃圾怎么办 两个月婴幼儿哭闹入睡难怎么办 8岁儿童睡觉困难怎么办 做精细动作手抖怎么办 15个月宝宝缺锌怎么办 八个月宝宝有蛔虫怎么办