zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    LeetCode Populating Next Right Pointers in Each Node
    LeetCode Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode Reverse Linked List II
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Pascal's Triangle
    Palindrome Construct Binary Tree from Preorder and Inorder Traversal
    Pascal's Triangle II
    LeetCode Word Ladder
    LeetCode Binary Tree Zigzag Level Order Traversal
  • 原文地址:https://www.cnblogs.com/hihtml5/p/6244625.html
Copyright © 2011-2022 走看看