您好,欢迎访问一九零五行业门户网

JavaScript简介_javascript技巧

本文不是参考手册式文章,仅适用于对js产生一个大致的认知,如需js的详细语法与应用请移步w3school
javascript是什么?
javascript的诞生
在1995年前后,当时世界上的主流带宽为28.8kbps,现在世界平均下载带宽为21.9mbps(数据来源于http://www.netindex.com)。当时的网民,每提交一次表单,都需要等待很久才能收到服务器的回应,甚至很可能等了几分钟收到的却是说缺少了某一项。为了改善用户体验,嵌入浏览器客户端的能实现简单表单判断的脚本诞生了,这就是javascript。
javascript最早是工作于netscape (网景公司)的 brendan eich为即将在1995年发行的netscapenavigator 2.0(nn2.0)开发的,当时叫做livescript。由于当时是和非常热门的sun公司合作的,为了赶上当时的潮流——java语言,这门语言被命名为javascript。
javascript跟java有什么关系?
这也是外行人听到javascript的第一反应,也是这门语言被诟病最多的问题之一。
严格的说,没有半毛钱关系。如果非要扯上关系,也许就是两者的部分函数相同、面向对象思想、判断结构、循环语句相同等等等等,但这些显然不是java的专利,而是编程语言的共识。
javascript的标准化及发展历史
javascript推出时,用户体验更好的nn 浏览器主宰了浏览器市场,而微软一直在追赶。在推出ie3的时候,微软发布了vbscript并以jscript为名,实际上和netscape的javascript没有多大区别(用今天的话来讲就是山寨)。面对微软的竞争,netscape和sun公司将自己的javascript草案提交给ecma(欧洲计算机制造商协会)对javascript进行了标准化,最后形成了ecmascript 的第一个版本(ecma-262)。
有意思的是,网景公司在标准化javascript之后,内部却出现了问题,javascript的研究停滞,而微软则趁机赶超,推出了ie4,内置了第一个遵循ecma规范的javascript引擎,比nn提前了一年。再加上微软系统逐步占领计算机操作系统市场,其预装的ie浏览器市场份额逐渐加大,nn不断被挤占市场。然而,当微软失去了最大的对手后,它就没有了发展的动力,ie6~ie8,无论是界面渲染还是脚本执行,都互不兼容,成为浏览器史上的一朵奇葩,也是前端开发者的噩梦。
复制代码 代码如下:
1.v1 1997年06月 首版
2.v2 1998年06月 格式修正,以使得其形式与iso/iec16262国际标准一致
3.v3 1999年12月 强大的正则表达式,更好的文字链处理,新的控制指令,异常处理,错误定义更加明确,数输出的格式化及其它改变
4.v4 未完成...可能更明确的类的定义,命名空间等等...
5.v5 2009年12月  新增“严格模式(strict mode)”,一个子集用作提供更彻底的错误检查,以避免结构出错。澄清了许多第3版本的模糊规范,and accommodates behaviour of real-world implementations that differed consistently from that specification。增加了部分新功能,如getters及setters,支持json以及在物件属性上更完整的反射。
****2004年6月欧洲计算机制造商协会发表了ecma-357标准,它是ecmascript的一个扩延,它也被称为e4x(ecmascript for xml)。
javascript跟ecmascript有什么关系?
其实问题应该是javascript、jscript、ecmascript三者有什么关系。实际上,ecmascript是总的规范,javascript和jscript都是依照这个规范开发的,和ecmascript相容,但包含了超出ecmascript的功能。不过,现在无论是哪种,都通称为javascript,只因其最早出现,影响力最大,名字流传至今。
javascript能干什么?
网页上面,一切需要逻辑处理的操作都可以由javascript来完成。譬如:
复制代码 代码如下:
•表单验证
•动画效果
•网页游戏
•倒计时
•……
还有很多很多种应用,在这里不赘述,相信大家学会这门语言之后会发现很多应用到的地方。
为什么要学javascript?
1.因为你别无选择,只有javascript可以控制所有常用的浏览器,而且javascript是世界上最重要的编程语言之一,学习web技术必须学会javascript。
2.javascript是一种优美的语言,它很好,所以我们要学
javascript的定位
复制代码 代码如下:
1.javascript是一门轻量级的脚本语言,不需要编译,由javascript解析引擎解析运行(一般指浏览器,当然不排除node之类的解析器)
2.javascript拥有非函数式语言特性、函数式语言特性和动态语言特性,它的语法非常灵活
3.javascript是一门面向对象的编程语言,在javascript界有一句话:万物皆对象。其继承是基于原型的继承(我之前已经专门写了一篇阐述原型继承的文章)
4.javascript是一门类c语言,所以只要学过c的人都很容易上手javascript
5.javascript的编写不需要编译器,而只需要文本编辑器(记事本就免了,这里强烈推荐sublime text)
javascript有什么?
现在大家用的javascript包含了三大部分:dom、bom、ecmascript(或称core js)。
dom
这里默认大家对html、css至少有所了解,如果是直接跳过html、css来看本文的话,先看此处。
dom,文档对象模型(document object model)
我们知道,xhtml要求标签必须闭合,嵌套必须正确。而标签的嵌套,就产生了父子关系(或者说,祖先-后代关系)。而dom,提供了大量的api,让我们可以轻松操作dom树。后面我会开一篇文章专门讲js dom。
使用dom,我们能动态修改页面内容,调整样式等等,这也是js多样化的一个体现。
bom
bom,浏览器对象模型(brower object model)
和dom类似,只不过主体变成了浏览器。浏览器同样提供了大量的api,其中部分对js开放,为我们提供了操作浏览器窗口的方法。
常见用处:
复制代码 代码如下:
1.弹出新浏览器窗口的能力;
2.移动、关闭和更改浏览器窗口大小的能力;
3.可提供web浏览器详细信息的导航对象;
4.可提供浏览器载入页面详细信息的本地对象;
5.可提供用户屏幕分辨率详细信息的屏幕对象;
6.支持cookies;
7.internet explorer对bom进行扩展以包括activex对象类,可以通过javascript来实现activex对象。
ecmascript core
也叫js core,随便怎么叫,意思一样,都是表示js这门语言的核心组成,包括变量定义,垃圾回收,语法,作用域等等。和上面提到的dom和bom不同,它们只要求我们能使用这些api,而ecmascript core则是这门语言的精髓所在,需要不断钻研。下一章将进一步讲js的语法。
javascript的使用
行内式
行内式即写在标签中的javascrip,例如我们在html中写入:
复制代码 代码如下:
点击
当我们点击按钮时,将会弹框显示be clicked。
但注意,强烈不建议这么做,因为这样会给维护带来巨大的麻烦,每次需要更改事件我们都需要先找到该元素,然后修改其javascript内容,而且这些javascript代码也无法复用。
另外,写在标签中的事件需要带'on',而且标签内只能通过事件引入js,而不能写简单的js表达式
内嵌式
内嵌式即在html的script标签中写js代码,做法是在html中新增一个script标签,然后在标签中间插入你的任意js代码,如下:
复制代码 代码如下:
点击
用内嵌式的话,就比行内式自由很多,可以写更多的代码,也可以避免引号的转义问题,维护也变得更轻松。但问题也是存在的,这些代码只能适用于这个页面,而无法被其他页面使用。
外联式
外联式把以上两种形式的缺点全部解决了。做法如下:
先新建一个文件,把后缀改为.js。例如,我们新建一个click.js文件,然后把刚才写的内嵌式里面的js代码拷贝进去(注意不包括script标签)
复制代码 代码如下:
var btn = document.getelementbyid(btn);
btn.onclick = function() {
     alert(be clicked);
}
然后在html中通过script标签引入
复制代码 代码如下:
点击
这样的好处在于同样的js代码可以被多个html页面共享,坏处是增加了文件数,增大了请求所需时间,所以应增强代码的复用性,并且最后要合并js文件(把不同的js文件合并成一个js文件)
其它类似信息

推荐信息