数据结构(Javascript)

来源:互联网 发布:计量软件有哪些 编辑:程序博客网 时间:2024/06/01 08:55
数据结构的老师不错,不是只会教学生考试的学院派书呆子,上课方式有点意思,去他博客斗胆问了一下,数据结构能用其他语言实现么,明哥果然爽快,OK没问题,于是乎那高大上的C++断然被我等喜欢脚本语言的屌丝抛弃了。 
  没错,就是JavaScript!

下面是试验内容


三.实验内容

1. 设计一个单文件结构程序完成从键盘输入两个数,输出二者的“和”和“积”的结果。要求如下:

1)设计函数来计算“和”和“积”,在主函数中调用,并能考虑重载函数,使整数和小数均能计算。

2)分别使用单步调试和断点调试来调试程序。并多次运行力求熟练调试方法。

2.使用函数的模板来实现上述功能。

3.使用一个类来实现上述功能。要求:

  1)使用类模板

  2)使用多文件:类的声明有头文件中;类的函数定义一个源文件中,在主程序文件中设计主函数程序,在实例化输出结果。


  试验内容一(1)的第一条要求考虑函数重载,这个是C++版的数据结构,但是用Javascript如何实现呢?

Javascript语言不支持重载,但是它又天然支持重载,为什么这样说呢?

请看如下代码:


  1. function test(first, second){  
  2.     alert(first + ' || ' + second);  
  3. }  
  4. test ('one''two');  

   这是个再正常不过的Javascript函数了,但是各位想过没,如果传入更多的参数会怎样?

形参只有两个,但是传入三个,四个甚至更多的参数呢?


  1. function test(first, second){  
  2. <span style="white-space:pre">    </span>alert(first + ' || ' + second);  
  3. }  
  4. test ('one''two','three','four');  

  传入了四个参数,但是好像什么都没有发生,浏览器没有报错,没有异常,但真的是这样么?! oh no


  Javascript函数创建的时候隐藏的创建了this和arguments,this是什么大家不会陌生,但是arguments是什么呢?


  1. function test(first, second){  
  2.     alert(arguments);  
  3.     alert(first + ' || ' + second);  
  4. }  
  5. test ('one''two','three','four');  

  打印出来发现arguments是传入的参数数组,对就是这样。而Javascript的重载就靠它来实现,众所周知,C++的函数重载是根据参数的数据类型和数量来判断重载操作的,但是Javascript是若类型语言,没有数据类型,所以只能用参数数量来实现重载,伪造出重载的效果。

[javascript] view plaincopyprint?
  1. <pre name="code" class="javascript">  function test(first, second){  
  2.             if (arguments.length == 1) {  
  3.                     //........................  
  4.                 } else if (arguments.length == 2) {  
  5.                     //......................  
  6.                 }  
  7.             }  


这样就用Javascript实现函数的重载了。

试验内容一(2)

  脚本调试技巧不在赘述,写的多了坑踩的多了自然就会了调试。

浏览器调试推荐FireBug很好很强大,详细情况去自己搜吧。

试验内容二

关于函数模板的问题。

  C++发展了这么多年,已经非常非常的成熟,有无数杰出的程序员贡献代码,各种库已经相当完善,许多底层的算法早都被封装好了,所以不必重复造轮子,但是Javascript对这些算法的实现只能自己来了。

模板只要我自己写了

[javascript] view plaincopyprint?
  1. function test(numOne, numTwo, ope){  
  2.     var result;  
  3.     if ( ope == '+' ) {  
  4.         return result = numOne + numTwo;  
  5.     } else if ( ope == 'x' ) {  
  6.         return result = numOne * numTwo;  
  7.     }  
  8. }  
  9. alert(test (1,2,'+'));  




试验三

  多文件的实现只需在HTML文件里引入<script src="XXX"></script>就好,多文件的优势无需赘述,尤其是在MV*架构的时候。

试验三(2)

  类的试验如下

[javascript] view plaincopyprint?
  1. function Test (numOne, numTwo, ope) {  
  2.     this.count = function () {  
  3.       var result;  
  4.       if ( ope == '+' ) {  
  5.         return result = numOne + numTwo;  
  6.             } else if ( ope == 'x' ) {  
  7.                 return result = numOne * numTwo;  
  8.                 }  
  9.             }         
  10.         };  
  11. var obj = new Test(1, 2, '+');  
  12. alert( obj.count() );  
也很简单.

0 0