javascript练习题
     function Vertex(city, x) {
            this.name = city;
            this.num = x;
        }
        var node0 = new Vertex("邯郸", 0);
        var node1 = new Vertex("邢台", 1);
        var node2 = new Vertex("石家庄", 2);
        var node3 = new Vertex("衡水", 3);
        var node4 = new Vertex("保定", 4);
        var node5 = new Vertex("沧州", 5);
        var node6 = new Vertex("廊坊", 6);
        var node7 = new Vertex("张家口", 7);
        var node8 = new Vertex("承德", 8);
        var node9 = new Vertex("唐山", 9);
        var node10 = new Vertex("秦皇岛", 10);
        var vex = [node0, node1, node2, node3, node4, node5, node6, node7, node8, node9, node10];
        function Graph(num) {
            this.verticesnum = num;
            this.edges = 0;
            this.adj = [];
            this.edgeTo = [];
            for (var i = 0; i < this.verticesnum; i++) {
                this.adj[i] = [];
            }
            this.addEdge = addEdge;
            this.showGraph = showGraph;
        }
        function addEdge(v, w, x)//此处形参是结点索引
        {
            this.adj[v][w] = x;
            this.adj[w][v] = x;
            this.edges++;
        }
        function showGraph() {
            for (var i = 0; i < this.verticesnum; i++) {
                document.write(vex[i].name + "->");
                for (var j = 0; j < this.verticesnum; j++) {
                    if (this.adj[i][j] != undefined) {
                        document.write(this.adj[i][j] + "公里" + vex[j].name);
                    }
                }
                document.write("<br>");
            }
        }
        g = new Graph(11);
        g.addEdge(0, 1, 58.67);
        g.addEdge(1, 3, 153.87);
        g.addEdge(1, 4, 248.41);
        g.addEdge(1, 5, 308.3);
        g.addEdge(1, 6, 390.18);
        g.addEdge(1, 7, 543.12);
        g.addEdge(1, 8, 621.59);
        g.addEdge(1, 9, 529.74);
        g.addEdge(1, 10, 673.94);
        g.addEdge(2, 3, 143.83);
        g.addEdge(2, 4, 142.35);
        g.addEdge(2, 5, 230.0);
        g.addEdge(2, 6, 390.18);
        g.addEdge(2, 7, 543.12);
        g.addEdge(2, 8, 621.59);
        g.addEdge(2, 9, 529.74);
        g.showGraph();
上周末一个同学拿了一段js代码给我看,说实话起初看起来懵懵的,不过仔细研究一下很有趣,据他介绍这是一段c++入门的代码 ,我很好奇为啥能用js实现,不过想到很多js底层都是c++和c写的也就不足为奇了! 这段代码直接服务制到浏览器是可以正常执行的,废话不多说了,说一下我对这段代码的理解:
首先浏览器加载从上到下var声明了很多全局变量,js里面是这样的它全部在javascript内部而不是function内部这段参考一下js里面作用域的概念,此时的this赋值了几个全局变量和function放到内存中,而当调用graph这个函数他内部调用了this这时候的this指的是graph这个函数体,并且设置了几个属性,属于私有属性,并且赋值给了属性两个函数,而这个函数正是加载全局的时候内部加载的两个函数体add和show,当全局变量g去调取graph这个函数的时候他的属性也被加载并且可以找到方法的索引,执行完毕之后浏览器里面能直接查询到这点:

之后向下继续执行,直到所有方法执行完毕并在浏览器里面显示出参数.
另外还有一种不知道正确不正确的理解方式,就是以类的概念去理解函数,定义graph方法相当于定义了graph类里面加载各种属性和方法,当执行到这个类之后相同命名空间下去调用对应方法最后输出
希望看到此贴的各位大神多多指出其中错误,方便日后改进.
javascript练习题的更多相关文章
- JavaScript 练习题
		
练习题 1. 使用for循环输出1到50的值,要求每次循环只能输出一个值,每输出十个换一行. 2 日历生成器: 要求 用户输入,这个月有多少天,本月1号是星期几,自动生成日历 3. 表格生成器 4. ...
 - HTML——JAVASCRIPT练习题——图片轮播
		
方法一: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
 - JavaScript练习题 全局变量 局部变量 作用域
		
前沿:大家好~我是阿飞~本次 任何简单的事情都可以复杂化,本次让我们来做下搞事情的练习题吧 例题1: var a = 1; function fn1(){ var a = 2; alert(a); / ...
 - 3月25 JavaScript 练习题
		
一个关于找7的题 <script type="text/javascript" language="javascript"> for(var i=1 ...
 - 廖雪峰JavaScript练习题3
		
请尝试写一个验证Email地址的正则表达式.版本一应该可以验证出类似的Email: 正则表达式: <!DOCTYPE html> <html> <head> < ...
 - 廖雪峰JavaScript练习题2
		
请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart'] 肯定有更简单的方法, ...
 - 廖雪峰JavaScript练习题
		
练习:不要使用JavaScript内置的parseInt()函 数,利用map和reduce操作实现一个string2int()函数: <!DOCTYPE html> <html&g ...
 - <JavaScript>几道javascript练习题
		
问题1: 作用域(Scope) 考虑以下代码: (function() { var a = b = 5; })(); console.log(b); 控制台(console)会打印出什么? 答案 上述 ...
 - javascript练习题(3):基础字符串运算
		
用两种方法实现下列问题! 1. 把一个字符串转化为驼峰写法 需求:margin-left=>marginLeft 思路一:split 把它转化为一个数组然后修改内容 function conve ...
 
随机推荐
- mpvue + vant + flyio 小程序项目总结
			
vant 的使用 我开始是 npm 导入,然后 import,使用不了. 找了各种方法,最后还是下载文件,然后找到 dist 文件夹,复制到项目里,我是放在 static 文件夹,文件名 dist 重 ...
 - 解析:让你弄懂redux原理
			
作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... Redux是JavaScript状态容器,提供可预测化的状态管理. 在实际开发中,常 ...
 - C#学习笔记------参数
			
一.形参 形参是本地变量,它声明在方法的参数列表中,而不是方法体中.
 - Linux中shell字符串分隔、字符串替换、字符串拼接
			
1.从properties文件中读取变量 SERVER_NAME=`sed '/project.config/!d;s/.*=//' conf/dubbo.properties | tr -d '\r ...
 - 记redis一次Could not get a resource from the pool 异常的解决过程
			
最近有个项目中的redis每天都会报 "Could not get a resource from the pool"的错误,而这套代码在另一地方部署又没有问题.一直找不到错误原因 ...
 - springboot笔记05——profile多环境配置切换
			
前言 一个应用程序从开发到上线,往往需要经历几个阶段,例如开发.测试.上线.每个阶段所用到的环境的配置可能都是不一样的,Springboot 应用可以很方便地在各个环境中对配置进行切换.所以,今天主要 ...
 - Java调用WebService方法总结(4)--Axis调用WebService
			
Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了.文中demo所使用到的软件版本:Java 1.8.0_191.Axis 1.4. 1.准备 参考Java调 ...
 - Android数据存储原理分析
			
Android上常见的数据存储方式为: SharedPreferences是 Android 中比较常用的存储方法,本篇将从源码角度带大家分析一下Android中常用的轻量级数据存储工具SharedP ...
 - 简单了解Django应用app及分布式路由
			
前言 应用在Django的项目中是一个独立的业务模块,可以包含自己的路由,视图,模板,模型. 一 创建应用程序 创建步骤 用manage.py中的子命令startapp创建应用文件夹 在setting ...
 - 如何导出ane所需的swc
			
来源:http://blog.sina.com.cn/s/blog_6471e1bb01012ard.html 打包.ane文件的时候需要用到ActionScript的扩展库(swc文件),那么如何生 ...