• [JavaScript]JS由来


    JavaScript最早由Netscape公司开发

    JavaScript的发展历程

    我们知道Windows桌面程序是可以交互的,用户可以点击菜单、按钮、下拉列表等控件,并通过消息机制来响应用户操作。 而最早的网页只是静态浏览,为了支持用户交互,浏览器开发商如Netscape和Microsoft相继都开发了自己的脚本语言,可以嵌入网页直接执行。 Netscape管理层希望这个语言像Java,因此取名JavaScript,在其Navigator 2.0浏览器中开始支持。而微软的脚本语言取名JScript,首先内置于IE3.0。 市场上还有一些其他的脚本语言版本。为了统一这些不同的版本,国际标准化组织ECMA对此进行了标准化,也就是ECMAScript,其后得到了行业的广泛支持。

    ECMAScript和JavaScript的关系是,前者是语言规范,而后者是一个具体实现。

    JavaScript之于Java的语言定位大体上是Java用来开发服务器和组件,而JavaScript保持简单易用来完成客户端功能,就好比微软当时的C++和VBScript的关系一样。

    JavaScript虽然由于市场原因取名Java,但其实更像C和Self语言的后代。JavaScript的总体设计思路如下:

    • 类C语言风格的语法
    • 借鉴了Java的垃圾回收机制
    • 类Self语言风格的基于原型(Prototype)的OO(Object-Oriented)模型

    JavaScript最初的版本由于设计和实现都很仓促,并非一门严谨的编程语言,有不少漏洞广为诟病。但是最重要的是能工作(it works!),而且由于浏览器的市场竞争和模仿,被快速广泛支持。从而形成了事实上的语言标准。

    当然JavaScript本身也随着Web一起演进而变得更为成熟和强大。在客户端领域击败了Java Applet、VBScript乃至其后起之秀Flash的ActionScript,是如今无可置疑的Web客户端第一编程语言,并开始向系统级语言扩展(NodeJS)。

    JavaScript语言标准的当前最新版本是ECMAScript6,发展历程大致如下:

    1. 1995: JavaScript出生,小名叫LiveScript。
    2. 1997: ECMAScript标准确立。
    3. 1999: ES3出现,与此同时IE5风靡一时。
    4. 2000–2005: XMLHttpRequest也就是AJAX大获流行,给了JS第2次生命。
    5. 2009: ES5出现,(就是我们大多数人现在使用的)例如forEachObject.keysObject.create 以及JSON标准。
    6. 2015: ES6/ECMAScript2015出现。主要是一些语法糖(好的语法改进),但缺少功能突破。

    JavaScript的意外成功让人想起一个道理:聪明不如幸运,勤奋不如眼光。

    什么是DOM

    JavaScript最主要的操作对象毫无疑问是HTML文档,我们使用面向对象的方法来对文档内容进行抽象和概念化,以便于程序对其进行操作。这样的文档对象模型就是DOM(Document Object Model),本质上是一种应用程序接口(API)。

    HTML文档的DOM结构和XML的DOM结构类似,都是一种树形结构。树的根节点就是document,然后有父节点、子节点、祖先、后代、兄弟节点这些关系。

    什么是BOM

    JavaScript除了要能操作文档,还需要能操作浏览器,比如获取浏览器窗口大小,或者刷新页面。和DOM类似,浏览器也提供了对象模型来支持JS的访问。这个模型就是BOM(Browser Object Model)。

    BOM主要包含如下6个对象:

    1. window对象,它是BOM的根对象,其它的BOM对象都是windows对象的属性
    2. document对象表示浏览器中加载页面的文档对象,而这个对象也就是DOM模型的根对象
    3. location对象包含了浏览器当前的URL信息
    4. navigator对象包含了浏览器本身的信息
    5. screen对象包含了客户端屏幕及渲染能力的信息
    6. history对象包含了浏览器访问网页的历史信息。

    JavaScript只有通过调用BOM/DOM API才能赋予网页文档动态交互特性,才能真正使得HTML变成动态的HTML。

    参考自:http://techbrood.com/h5b2a?p=why-js-exists

  • 相关阅读:
    【笔记】程序员编程艺术 字符串转换成整数
    解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]
    python_day1(初始Python)
    ActiveMQ 复杂类型的发布与订阅
    win8.1 Framework3.5安装不上的问题
    JVM探秘:内存溢出
    JVM探秘:Java对象
    JVM探秘:Java内存区域
    Vmware安装的linux系统开机黑屏,点关闭就显示虚拟机忙怎么怎么解决?
    Java基础--面向对象(上)
  • 原文地址:https://www.cnblogs.com/hihtml5/p/6244625.html
Copyright © 2020-2023  润新知