数据结构(Javascript)
数据结构的老师不错,不是只会教学生考试的学院派书呆子,上课方式有点意思,去他博客斗胆问了一下,数据结构能用其他语言实现么,明哥果然爽快,OK没问题,于是乎那高大上的C++断然被我等喜欢脚本语言的屌丝抛弃了。
没错,就是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() );
也很简单.
数据结构(Javascript)相关推荐
- javascript map 排序_数据结构-JavaScript字典结构的编程实现
字典是一类特殊的数据元素的集合,字典的基本单元为数对,所谓数对是指类似(key,value)形式的数据.每一个数对结构包括了关键字key与该元素对应的value值,在一个普通字典所组成的数对集合中,关 ...
- 【数据结构 JavaScript版】- web前端开发精品课程【红点工场】 --javascript-- 链表实现...
<!DOCTYPE html> <html><head><title></title> </head><body>& ...
- c++矩阵类_数据结构-JavaScript矩阵类的设计与实现
矩阵是线性代数课学习的重点内容之一,也是线性代数常见工具之一,在应用数学.统计分析.计算机科学.计算机图像处理级物理等多学科中均有应用.矩阵主要是指数据的行列排列的形式,由行row与列col所组成,在 ...
- 数据结构与算法JavaScript (一) 栈
序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...
- JavaScript数据结构与算法 基础
- 栈 1.栈的应用场景 场景一:十进制转二进制 后出来的余数反而要排到前面 把余数依次入栈,就可以实现倒序输出 场景二:有效的括号 越靠前的左括号,对应的左括号越靠前. 左括号入栈,右括号出栈,最后 ...
- CSS、JavaScript、PHP和Python编程合二为一
CSS, JavaScript,PHP And Python Programming All in One Course 在一门课程中学习Javascript.PHP和Python编程语言的CSS 你 ...
- (四)数据结构之“队列”
数据结构之"队列" 队列是什么? 队列的应用场景 场景一:食堂排队打饭 场景二:JS异步中的任务队列 场景三:计算最近请求次数 LeetCode:933.最近的请求次数 前端与队列 ...
- (三)数据结构之“栈”
数据结构之"栈" 栈是什么 栈的应用场景 场景一:十进制转二进制 场景二:有效的括号 场景三:函数调用堆栈 JS中的函数调用堆栈 LeetCode:20.有效的括号 LeetCod ...
- 阮一峰的JavaScript 的 this 原理
一.问题的由来 学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果. var obj = {foo: function () {} };var foo = obj.fo ...
最新文章
- yii2 设置的缓存无效,返回false,不存在
- 【DIY】玩转VFD荧光屏(一),自制VFD时钟全资料(原理图+源码+PCB)
- Connected to an idle instance问题的小小仇恨
- 使用HTTPS和OAuth 2.0保护服务到服务的Spring微服务
- 使用ExpandoObject将XML转换为动态对象
- java 内省 反射_如何使用反射/内省来维护程序?
- C++基础——函数模板
- thinkphp5 与 endroid 二维码生成
- 位姿矩阵求逆 (搬运)
- 微信小程序登录流程总结 目录 1.1. 前端调用wx.login 。。给后端传递一个code	1 1.2. 开发者需要在开发者服务器后台调用 auth.code2Session,使用 code 换取
- 高等代数——大学高等代数课程创新教材(丘维声)——3.5笔记+习题
- python实现黄金分割法确定极小点
- 复合类型(json)
- 自制Beamer主题
- 2021数学建模C题详细思路,代码,论文,参考文献
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- word 添加批注 标题向右移动 解决方法
- DOM系列:DOM树和遍历DOM
- 什么是Verilog HDL?
- Android源码看设计模式(十二)--------关于观察者模式的Rxjava的相关分析