zoukankan      html  css  js  c++  java
  • javaScript语言的预编译与运行

    JS代码执行的过程:

      1.预编译 ---- 事先对js代码做一个预处理

      2.代码运行---开始执行JS代码。

    JS编程:

      1.加载DOM的最好在/BODY之前

      2.与DOM渲染无关的放在Head里面

      3.JS文件尽量独立方便压缩 同时文件少,减少请求次数。

      4.变量使用命名空间,减少全局变量

      5.JS操作DOM获取DOM是实时的,通过Length来预先存储,方便遍历。

    JS代码解析机制:

      1.编译阶段---预处阶段-----转成字节码

      2.运行阶段---代码执行-----执行本地代码

        变量:var与function都是变量的声明。

        jS是按照快来执行的即使--Script就是对这一个标签类的JS做--(编译,执行)这样的一个过程。

        活动对象----看情况来说,当前命名空间下面。

        a.编译阶段:

          对声明的变量进行所在上下文(活动对象--比如windows)的提升--属于当前环境

          var------------值为undefined -----------------作为当前活动对象的一个属性

          function-------值为函数定义代码    -------------作为当前活动对象的一个属性

          感觉就是对变量初始化设初始值

           引用:JavaScript解释器在执行脚本时,是按块来执行的。通俗地说,就是浏览器在解析HTML文档流时,如果遇到一个<script>标签,则JavaScript解释器会等到这个代                                         码块都加载完后,先对代码块进行预编译,然后再执行。执行完毕后,浏览器会继续解析下面的HTML文档流,同时JavaScript解释器也准备好处理下一个代码块。

                 所以:编译阶段快都在一个活动对象之上,变量函数是共享的,出问题主要是应为代码如果在html解析阶段,后续为完成,代码执行可能出问题  所以尽量在onload里面

              编写。

          注意:函数表达式:var say = function(params) {} 类似的形式。

        b.运行阶段:

          运行阶段,代码是顺序执行的。

      总结:

        html = html + JS(script) 

        页面加载后进行解析html文档流 ,建立DOM树  渲染页面

        页面解析是采取的从上到下的顺序,如果遇到JS代码快(script)则编译运行在做后续的解析,代码尽量在onload事件里面执行,这样的话不会出现变量没有定义的错误

     ====================================================================================================

    javaScript实现继承的两种方式:(本质采用原型链,call,apply实现)

    类式继承:单继承

    混入继承(mix):-实现多继承

      ====================================================================================================

      JS面向对象的开发:

          1.基于{}命名空间

          2.基于JS的动态加载JS机制和基于JS的CSS加载机制

          3.基于Iframe的页面机制

          4.基于Html页面标签的数据负载机制或者cooke机制进行数据暂存。

          5.基于function的类的设计(函数式编程)

     ====================================================================================================

     1.作用域:

     2.prototype

     3.constractor

     4.apply,call机制

     5.面向对象与代码结构

     6.开源js项目

     ====================================================================================================

     

    // 构造函数
    function Foo(y) {
      // 构造函数将会以特定模式创建对象:被创建的对象都会有"y"属性
      this.y = y;
    }
     
    // "Foo.prototype"存放了新建对象的原型引用
    // 所以我们可以将之用于定义继承和共享属性或方法
    // 所以,和上例一样,我们有了如下代码:
     
    // 继承属性"x"
    Foo.prototype.x = 10;
     
    // 继承方法"calculate"
    Foo.prototype.calculate = function (z) {
      return this.x + this.y + z;
    };
     
    // 使用foo模式创建 "b" and "c"
    var b = new Foo(20);
    var c = new Foo(30);
     
    // 调用继承的方法
    b.calculate(30); // 60
    c.calculate(40); // 80
     
    // 让我们看看是否使用了预期的属性
     
    console.log(
     
      b.__proto__ === Foo.prototype, // true
      c.__proto__ === Foo.prototype, // true
     
      // "Foo.prototype"自动创建了一个特殊的属性"constructor"
      // 指向a的构造函数本身
      // 实例"b"和"c"可以通过授权找到它并用以检测自己的构造函数
     
      b.constructor === Foo, // true
      c.constructor === Foo, // true
      Foo.prototype.constructor === Foo // true
     
      b.calculate === b.__proto__.calculate, // true
      b.__proto__.calculate === Foo.prototype.calculate // true
     
    );

     ====================================================================================================

     引用:http://blog.csdn.net/cxiaokai/article/details/7552653

        http://www.blogjava.net/JAVA-HE/archive/2010/10/09/334021.html

      http://www.nowamagic.net/librarys/veda/detail/1642

       http://www.cnblogs.com/sanshi/archive/2009/07/14/1523523.html

  • 相关阅读:
    Timer定时任务
    spring boot配置多数据源
    消费者模块调用提供者集群报错
    修改windHost文件
    spring常用注解+Aop
    添加ClustrMaps
    无题
    2020年3月21日 ICPC训练联盟周赛,Benelux Algorithm Programming Contest 2019
    2020年3月14日 ICPC训练联盟周赛,Preliminaries for Benelux Algorithm Programming Contest 2019
    2020.4.12 个人rating赛 解题+补题报告
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/3576383.html
Copyright © 2011-2022 走看看