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

javaScript语言的预编译与运行的更多相关文章

  1. JavaScript作用域原理——预编译

    JavaScript是一种脚本语言, 它的执行过程, 是一种翻译执行的过程.并且JavaScript是有预编译过程的,在执行每一段脚本代码之前, 都会首先处理var关键字和function定义式(函数 ...

  2. JavaScript作用域及预编译

    几乎所有的编程语言都可以存储,访问,修改变量,那在JavaScript中这些变量放在那里?程序如何找到他们? js被归类于解释执行语言,但事实上他也是一门编译语言,因为他也要编译,但于传统的编译语言不 ...

  3. javascript中的预编译问题

    Js作为脚本语言,可以不需要编译直接运行,但遇到类似变量或者函数同名,预编译方面的知识可以帮助我们更好解决问题. 示例: 这是一段js中普通的函数调用代码 <script>1.    // ...

  4. C语言的预编译

    由"源代码"到"可执行文件"的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译 ...

  5. 聊聊C语言的预编译指令include

    "include"相信大家不会陌生,在我们写代码时,开头总会来一句"include XXX".include是干嘛用的,很多教材都提到了,因此这里不会再详细解释 ...

  6. Sublime Text 3 实现C语言代码的编译和运行

    Sublime Text 3 是一款优秀的代码编辑软件.界面简洁,轻巧快速,很受大家的欢迎. 最近开始用他来编辑数据结构的C语言代码,这就需要在新建编译系统.具体方法如下: 首先: 接下来是关键的一步 ...

  7. C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】

    由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对 ...

  8. (十八)C语言之预编译命令、宏

  9. 一步一步的理解javascript的预编译

    首先,我们要知道javascript是单线程.解释性语言.所谓解释性语言,就是翻译一句执行一句.而不是通篇编译成一个文件再去执行. 其实这么说还没有这么直观,读一句执行一句那是到最后的事了.到JS执行 ...

随机推荐

  1. ios之开发屏幕适配和系统版本适配

    ios软件开发过程中很重要的一点是对系统和屏幕进行适配对系统的适配主要是IOS7以后和之前以及IOS8新增特性,屏幕适配主要是对不同设备采用不同的布局以最佳展示效果展现给用户. 针对系统的适配: IO ...

  2. 【ssm】拦截器的原理及实现

    一.背景: 走过了双11,我们又迎来了黑色星期五,刚过了黑五,双12又将到来.不管剁手的没有剁手的,估计这次都要剁手了!虽然作为程序猿的我,没有钱但是我们长眼睛了,我们关注到的是我们天猫.淘宝.支付宝 ...

  3. 在intent-filter中的配置

    1.scheme约束和mimetype的数据类型,这些都可以自己去定义. 2.但是由于在MainActivity却不能直接将这两个参数分开来写,例如setdata和settype,这样会互相删除. 因 ...

  4. HPU 1007: 严格递增连续子段(贪心)

    1007: 严格递增连续子段 [模拟] 时间限制: 1 Sec 内存限制: 128 MB提交: 244 解决: 18 统计 题目描述 给定一个有NN个正整数组成的序列,你最多可以改变其中一个元素,可以 ...

  5. HDU 1002:A + B Problem II(大数相加)

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. CTF密码学之摩斯密码

    通过不用的排列顺序来表达不用的英文字母,数字和标点符号,摩斯电码由.和_构成 字母 字符 电码符号 字符 电码符号 A ._ N _. B _... O _ _ _ C _._. P ._ _. D ...

  7. 弱也有弱的ACM经历

    作为一名弱校的acm渣渣,在经历了三年的acm生涯后,现在终于要毕业了,最后也来总结下自己在这几年中做acm的经历与感受.以下是参赛总结: 2013年: ACM/ICPC长沙邀请赛(打铁=_=) AC ...

  8. 获取的时候报cannot find package "golang.org /x/net/context",编译也报错误

    gitclone  这个https://github.com/golang/net.git ,编译通过了. 创建了相应的golang.org/x/ 路径, 然后将克隆的目录 放回golang.org/ ...

  9. BZOJ 1845三角形面积并

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1845 给定100个三角形,求三角形面积并. 戴神模板太可怕.直接调用函数秒掉.思路 ...

  10. 根据日期计算星期几----蔡勒(Zeller)公式推导

    计算给定日期是星期几,好象是编程都会遇到的问题,最近论坛里也有人提到这个问题,并给出了一个公式:             W=   (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400 ...