发展史

五大主流浏览器

浏览器名称 浏览器内核
chrome webkit/blink
IE trident
Opera presto
FireFox gecko
Safari webkit

浏览器发展简单历史

时间 地点 人物 事件
1990 欧洲核子研究所(cern) 蒂姆博纳斯李 1:创办万维网基金会(World Wide Web)
2:将W3C移植到C语言
1993 伊利诺大学 马克安德森 1:开发了MOSIAC浏览器(基于UNIX)
2:MOSIAC浏览器可以显示图片
1994 马克安德森,克拉克 1:创办了MOSAIC公司(由于版权属于伊利诺大学)
2:创办网景公司。
3:开发了Navigator浏览器
4:伊利诺大学将版权卖给了硅图公司。
1996 微软 1微软收购SGI公司。
2:开发了IE1.0
1996 微软 1:推出了IE3.0
2:推出了JScript
1996 网景公司 Brendan Eic 1:开发出LiveScript
1996 1:和SUN公司合作
2:取名为JavaScript
2001 微软 1:xp诞生
2:IE6
3:JS引擎
2002 网景公司开放源代码
2003 Mozilla公司 1:推出FireFox浏览器(基于navigator浏览器
2008 Google公司 1:推出chrome浏览器
2:基于webkit/blink/gear
3:开发出V8引擎
1:独立于浏览器(Node)。
2:直接翻译机器码
2009 甲骨文 甲骨文收购SUN公司。JavaScript 归属于甲骨文

ECMA

欧洲计算机制造商协会(European Computer Manufactures Association)
职责:评估、开发、认可电信和计算机标准。
ECMA 262规范
脚本语言规范 ECMAScript ES X的语言都是规范化的语言。

编程语言

  • 分类
    • 编译型
      • 源码 =>编译器 =>机器码 =>可执行文件(c#,.net)
    • 解释型
      • 源码=>解释器=>解释一行 执行一行 。
      • 不需要不同平台进行移植
  • 高级语言
    • 脚本语言
      • JScript、vbScript(客户端)、actionScript(adobe flash)
      • 客户端脚本(js)。服务端脚本(php)
      • 源码=>引擎=>编译器
  • 四要素

    • 变量
    • 数据结构
    • 运算
    • 函数

      ECMAScript

  • 语法

  • 变量

    • 功能: 容器 存储数据
    • 命名规范
      • 不能以数字开头
      • 能字母_$开头
      • 字母_$数字
      • 关键字 保留字(class int)
      • 语义化 解构化
      • 小驼峰 大驼峰命名
    • 运算>赋值
      1. var a = 1,
      2. b = 3;
      3. var z = a + b;//运算>赋值
  • 关键字

动态语言 ->脚本语言 ->解释型语言 ->弱类型语言
静态语言 ->编译型语言 ->强类型语言

  • 原始值
    • Number
    • String
    • Boolean
    • undefined
    • null
  • 引用值
    • Object
    • Array
    • Function
    • Date
    • RegExp
      • 原始类型
      • 引用类型运算
      • 对象 继承 函数

        DOM

  • docoment object model W3C规范

    BOM

  • 浏览器宽高 正则表达式 滚动条

  • browser object model 没有规范

    JS引擎

  • 单线程 来模拟多线程

    • 轮转时间片:短时间内轮流执行多个任务的片段
      • 任务1 任务2
      • 切成任务1的片段和任务2 的片段
      • 随机排成生成一个任务片段队列
      • 将这个任务片送入到js 进程里。
      • js 执行一个又一个的任务片段。
  • 多线程

    内存

  • 栈内存

    • 原始值存储在栈内存
      1. var a = 1;
      2. var b = a;
      3. a = 2;
      4. console.log(b);//1 浅拷贝
      5. console.log(a);//2
  • 堆内存

    • 引用值指针地址存在栈内存
      1. var arr = [1,2,3];
      2. var arr1 = arr;
      3. arr=[1,2];
      4. var arr2 = arr;
      5. arr.push(3);
      6. console.log(arr1);//输出为[1,2,3]
      7. console.log(arr2);//输出为[1,2,3] push 进来改变的是原数组