没错,就是JavaScript!
下面是试验内容
三.实验内容
1. 设计一个单文件结构程序完成从键盘输入两个数,输出二者的“和”和“积”的结果。要求如下:
1)设计函数来计算“和”和“积”,在主函数中调用,并能考虑重载函数,使整数和小数均能计算。
2)分别使用单步调试和断点调试来调试程序。并多次运行力求熟练调试方法。
2.使用函数的模板来实现上述功能。
3.使用一个类来实现上述功能。要求:
1)使用类模板
2)使用多文件:类的声明有头文件中;类的函数定义一个源文件中,在主程序文件中设计主函数程序,在实例化输出结果。
试验内容一(1)的第一条要求考虑函数重载,这个是C++版的数据结构,但是用Javascript如何实现呢?
Javascript语言不支持重载,但是它又天然支持重载,为什么这样说呢?
请看如下代码:
- function test(first, second){
- alert(first + ' || ' + second);
- }
- test ('one', 'two');
这是个再正常不过的Javascript函数了,但是各位想过没,如果传入更多的参数会怎样?
形参只有两个,但是传入三个,四个甚至更多的参数呢?
- function test(first, second){
- <span style="white-space:pre"> </span>alert(first + ' || ' + second);
- }
- test ('one', 'two','three','four');
传入了四个参数,但是好像什么都没有发生,浏览器没有报错,没有异常,但真的是这样么?! oh no
Javascript函数创建的时候隐藏的创建了this和arguments,this是什么大家不会陌生,但是arguments是什么呢?
- function test(first, second){
- alert(arguments);
- alert(first + ' || ' + second);
- }
- test ('one', 'two','three','four');
打印出来发现arguments是传入的参数数组,对就是这样。而Javascript的重载就靠它来实现,众所周知,C++的函数重载是根据参数的数据类型和数量来判断重载操作的,但是Javascript是若类型语言,没有数据类型,所以只能用参数数量来实现重载,伪造出重载的效果。
- <pre name="code" class="javascript"> function test(first, second){
- if (arguments.length == 1) {
- //........................
- } else if (arguments.length == 2) {
- //......................
- }
- }
这样就用Javascript实现函数的重载了。
试验内容一(2)
脚本调试技巧不在赘述,写的多了坑踩的多了自然就会了调试。
浏览器调试推荐FireBug很好很强大,详细情况去自己搜吧。
试验内容二
关于函数模板的问题。
C++发展了这么多年,已经非常非常的成熟,有无数杰出的程序员贡献代码,各种库已经相当完善,许多底层的算法早都被封装好了,所以不必重复造轮子,但是Javascript对这些算法的实现只能自己来了。
模板只要我自己写了
- function test(numOne, numTwo, ope){
- var result;
- if ( ope == '+' ) {
- return result = numOne + numTwo;
- } else if ( ope == 'x' ) {
- return result = numOne * numTwo;
- }
- }
- alert(test (1,2,'+'));
多文件的实现只需在HTML文件里引入<script src="XXX"></script>就好,多文件的优势无需赘述,尤其是在MV*架构的时候。
试验三(2)
类的试验如下
- function Test (numOne, numTwo, ope) {
- this.count = function () {
- var result;
- if ( ope == '+' ) {
- return result = numOne + numTwo;
- } else if ( ope == 'x' ) {
- return result = numOne * numTwo;
- }
- }
- };
- var obj = new Test(1, 2, '+');
- alert( obj.count() );