javascript代码实例教程-Javascript与当前项目的思考

发布时间:2019-02-26 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-Javascript与当前项目的思考脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 Javascript与当前项目的思考

2013-10-25 23:20 by 不屈小强, 592 阅读, 5 评论, 收藏, 编辑

 

 

 

 

主体 分为以下三部分,能力、经验有限,欢迎拍砖。

 

1.低效的代码

 

2.面向对象的重构重复利用代码

 

3.调试的经验总结

 

 

 

第一部分 日常中低效的代码

 

 

 

加载和运行

 

<htML>

 

<head>

<tITle>Script Example</title>

 

</head> <body>

 

<p>

 

<script tyPE="text/javascript">

 

document.write("The date is " + (new Date()).toDatestring());

 

</script> </p>

 

</body> </html>

 

 

 

当浏览器遇到一个<script>标签时,正如上面 HTML 页面中那样,无法预知 JavaScript 是否在<p>标签中 添加内容。因此,浏览器停下来,运行此 JavaScript 代码,然后再继续解析、翻译页面。同样的事情发生 在使用 src 属性加载 JavaScript 的过程中。浏览器必须首先下载外部文件的代码,这要占用一些时间,然后 解析并运行此代码。此过程中,页面解析和用户交互是被完全阻塞的。

 

一个<script>标签可以放在 HTML 文档的<head>或<body>标签中,可以在其中多次 出现。传统上,<script>标签用于加载外部 JavaScript 文件

 

Javascript与当前项目的思考

 

第一个 JavaScript 文件开始下载,并阻塞了其他文件的下载过程。进 一步,在 file1.js 下载完之后和 file2.js 开始下载之前有一个延时,这是 file1.js 完全运行所需的时间。每个文件必须等待前一个文件下载完成并运行完之后,才能开始自己的下载过程。当这些文件下载时,用户面 对一个空白的屏幕。这就是几年前(现在当网速较慢时,仍可重现这个问题)大多数浏览器的行为模式。

 

因为脚本阻塞其他页面资的下载过程,所以推荐的办法是:将所有<script>标签放在尽可能接近<body> 标签底部的位置,尽量减少对整个页面下载的影响。例如:

 

 

<html>

 

<head>

<title>Script Example</title>

 

<link rel="stylesheet" type="text/css" href="styles.css"> </head>

<body>

 

<p>Hello world!</p>

<-- Example of recommended script positioning --> 

 

<script type="text/javascript" src="file1.js"></script> 

 

<script type="text/javascript" src="file2.js"></script> 

 

<script type="text/javascript" src="file3.js"></script>

 

</body> 

 

</html>

 

 

 

数据访问

 

 

 

 

数据存储在哪里, 关系到代码运行期间数据被检索到的速度。在 JavaScript 中,此问题相对简单,因为数据存储只有少量方 式可供选择。正如其他语言那样,数据存储位置关系到访问速度。在 JavaScript 中有四种基本的数据访问 位置:

 

直接量(Literal values)

 

 

直接量仅仅代表自己,而不存储于特定位置。

 

 JavaScript 的直接量包括:

 

字符串(string),数字(Number),布尔值(Boolean),对象(Object), 数组(Array),函数(Function),正则表达式(RegExp),具有特殊意义的空值(null),以及未定义(undefined)。

 

变量(VARiables)

 

 

我们使用 var 关键字创建用于存储数据值。

 

数组项(Array items)

 

具有数字索引,存储一个 JavaScript 数组对象。

 

对象成员(Object members)

 

具有字符串索引,存储一个 JavaScript 对象。

 

每一种数据存储位置都具有特定的读写操作负担。大多数情况下,对一个直接量和一个局部变量数据访问的性能差异是微不足道的。 

 

 

 

管理作用域(Managing Scope)

 

 

 

作用域概念是理解 JavaScript 的关键,不仅从性能的角度,而且从功能的角度。作用域对 JavaScript 有 许多影响,从确定哪些变量可以被函数访问,到确定 this 的值,首先要理解作用域的工作原理。

 

作用域链和标识符解析(Scope Chains and Identifier Resolution)

 

 

 

每一个 JavaScript 函数都被表示为对象。进一步说,它是一个函数实例。函数对象正如其他对象那样, 拥有你可以编程访问的属性,和一系列不能被程序访问,仅供 JavaScript 引擎使用的内部属性。 

 

 内部[Scope]属性包含一个函数被创建的作用域中对象的集合。此集合被称为函数的作用域链,它决定哪些数据可由函数访问。此函数作用域链中的每个对象被称为一个可变对象,每个可变对象都以“键值对”

 

的形式存在。当一个函数创建后,它的作用域链被填充以对象,这些对象代表创建此函数的环境中可访问的数据。例如下面这个全局函数:

 

 

function add(num1, num2)

 

 

  var sum = num1 + num2; 

 

  return sum;

 

}

 

 

当 add()函数创建后,它的作用域链中填入一个单独的可变对象,此全局对象代表了所有全局范围定义的变量。此全局对象包含诸如窗口(window)、浏览器(browser)和文档(DOM)之类的访问接口。(注意: 此图中只画出全局变量中很少的一部分,其他部分还很多)。

 

 

 

 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-Javascript与当前项目的思考全部内容,希望文章能够帮你解决javascript代码实例教程-Javascript与当前项目的思考所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。