数据结构的老师不错,不是只会教学生考试的学院派书呆子,上课方式有点意思,去他博客斗胆问了一下,数据结构能用其他语言实现么,明哥果然爽快,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 plain copy print ?
  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 plain copy print ?
  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 plain copy print ?
  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() );

也很简单.

数据结构(Javascript)相关推荐

  1. javascript map 排序_数据结构-JavaScript字典结构的编程实现

    字典是一类特殊的数据元素的集合,字典的基本单元为数对,所谓数对是指类似(key,value)形式的数据.每一个数对结构包括了关键字key与该元素对应的value值,在一个普通字典所组成的数对集合中,关 ...

  2. 【数据结构 JavaScript版】- web前端开发精品课程【红点工场】 --javascript-- 链表实现...

    <!DOCTYPE html> <html><head><title></title> </head><body>& ...

  3. c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

    矩阵是线性代数课学习的重点内容之一,也是线性代数常见工具之一,在应用数学.统计分析.计算机科学.计算机图像处理级物理等多学科中均有应用.矩阵主要是指数据的行列排列的形式,由行row与列col所组成,在 ...

  4. 数据结构与算法JavaScript (一) 栈

    序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...

  5. JavaScript数据结构与算法 基础

    - 栈 1.栈的应用场景 场景一:十进制转二进制 后出来的余数反而要排到前面 把余数依次入栈,就可以实现倒序输出 场景二:有效的括号 越靠前的左括号,对应的左括号越靠前. 左括号入栈,右括号出栈,最后 ...

  6. CSS、JavaScript、PHP和Python编程合二为一

    CSS, JavaScript,PHP And Python Programming All in One Course 在一门课程中学习Javascript.PHP和Python编程语言的CSS 你 ...

  7. (四)数据结构之“队列”

    数据结构之"队列" 队列是什么? 队列的应用场景 场景一:食堂排队打饭 场景二:JS异步中的任务队列 场景三:计算最近请求次数 LeetCode:933.最近的请求次数 前端与队列 ...

  8. (三)数据结构之“栈”

    数据结构之"栈" 栈是什么 栈的应用场景 场景一:十进制转二进制 场景二:有效的括号 场景三:函数调用堆栈 JS中的函数调用堆栈 LeetCode:20.有效的括号 LeetCod ...

  9. 阮一峰的JavaScript 的 this 原理

    一.问题的由来 学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果. var obj = {foo: function () {} };var foo = obj.fo ...

最新文章

  1. yii2 设置的缓存无效,返回false,不存在
  2. 【DIY】玩转VFD荧光屏(一),自制VFD时钟全资料(原理图+源码+PCB)
  3. Connected to an idle instance问题的小小仇恨
  4. 使用HTTPS和OAuth 2.0保护服务到服务的Spring微服务
  5. 使用ExpandoObject将XML转换为动态对象
  6. java 内省 反射_如何使用反射/内省来维护程序?
  7. C++基础——函数模板
  8. thinkphp5 与 endroid 二维码生成
  9. 位姿矩阵求逆 (搬运)
  10. 微信小程序登录流程总结 目录 1.1. 前端调用wx.login 。。给后端传递一个code 1 1.2. 开发者需要在开发者服务器后台调用 auth.code2Session,使用 code 换取
  11. 高等代数——大学高等代数课程创新教材(丘维声)——3.5笔记+习题
  12. python实现黄金分割法确定极小点
  13. 复合类型(json)
  14. 自制Beamer主题
  15. 2021数学建模C题详细思路,代码,论文,参考文献
  16. Android中的长度单位详解(dp、sp、px、in、pt、mm)
  17. word 添加批注 标题向右移动 解决方法
  18. DOM系列:DOM树和遍历DOM
  19. 什么是Verilog HDL?
  20. Android源码看设计模式(十二)--------关于观察者模式的Rxjava的相关分析

热门文章

  1. 获取shp文件四至范围的方法总结
  2. 360°大视野安全帽识别系统-深度学习智能视频分析
  3. mysql查看当前库所有表记录数_mysql中查看数据库中所有表的记录数
  4. 等保相关技术和产品之电子门禁系统
  5. Apache Kylin v2.6.4 正式发布!
  6. 在Ubuntu\Centos等Linux环境安装支付宝控件
  7. Javasocket服务端持久化,持续更新中
  8. redis脚本命令执行(redis.call)
  9. 气传导蓝牙耳机哪个好、气传导蓝牙耳机排行榜
  10. 软件缺陷、软件错误、软件故障学习记录