摘要: 严格来讲,JavaScript中没有私有成员的概念;所哟对象属性都是公开的。不过,有一个私有变量的概念。任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量。私有变量包括函数的参数、局部变量和函数内定义的其他函数。如: 1234function add(num1,num2){ var sum=num1+num2; return sum; }在这个函数内部,有3个私有变量:... 阅读全文
posted @ 2013-06-03 12:09 烧点饭 阅读(6127) 评论(0) 推荐(3) 编辑
摘要: ECMAScript是JavaScript的核心,但在web使用JavaScript,那么BOM(浏览器对象模型)才是真正的核心。BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象既是JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。也就是说,在网页中定义的任何一个变量、对象和函数以window作为其Global对象。1... 阅读全文
posted @ 2013-06-03 12:09 烧点饭 阅读(3826) 评论(0) 推荐(2) 编辑
摘要: 1.闭包与变量 JavaScript中的作用域链的机制引出了一个副作用,即闭包只能取得包含函数中任何变量的最后一个值。闭包所保存的是整个变量对象,而不是某个特殊的值。1234567891011121314function createFunctions(){ var result=new Array(); for (var i=0;i<10;i++){ result[i]=function(){ ... 阅读全文
posted @ 2013-05-30 12:52 烧点饭 阅读(7917) 评论(0) 推荐(1) 编辑
摘要: JavaScript中是没有块级作用域概念的。也就是说,在块级语句中定义的变量,实际上是在包含函数中(外部函数)而非语句中创建的。123456function outputNumber(count){ for(var i=0;i<1000;i++){ alert(i); } alert(i); //count }该函数在java、C#等语言中,变量i只会在for循环语句中有定义,循环结束,i也就被... 阅读全文
posted @ 2013-05-30 12:52 烧点饭 阅读(1443) 评论(0) 推荐(0) 编辑
摘要: 闭包是指有权访问另一个函数作用域的变量的函数。 创建闭包的常见方式,就是在函数内部创建一个函数。 1 2 3 4 5 6 7 8 9 10 11 12 13 function creteComparisonFunction(... 阅读全文
posted @ 2013-05-29 09:53 烧点饭 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 前面讲过,定义函数的方式有两种:一种是函数声明,另一种是函数表达式。函数声明: 123function functionName(arg0,arg1,arg2){ //函数体 }关于函数声明,一个重要的特征就是函数声明提升,意思就是在执行代码之前会先读取函数声明。这就意味着可以把函数声明放到调用它的语句之后。函数表达式:123var functionName=function(arg0,arg1,... 阅读全文
posted @ 2013-05-23 20:03 烧点饭 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 1.借用构造函数在解决原型中包含引用类型值所带来的问题的过程中,我们可以使用一种叫借用构造函数的技术(又称伪造对象或经典继承)。就是在子类型构造函数的内部调用父类型构造函数,记住,函数只不过是在特定环境中执行代码的对象,可以通过使用apply()和call()方法也可以在(将来)新创建的对象上执行构造函数。123456789101112131415function SuperType(){ thi... 阅读全文
posted @ 2013-05-22 20:21 烧点饭 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 1.原型链原型链是JavaScript中继承的主要方法。每个构造函数都拥有一个原型对象,原型对象都包含一个指向构造函数的指针(constructor),实例都包含一个指向原型对象的内部指针(__proto__)。假如,原型对象(Son.prototype)等于另一个类型(Pserson)的实例(person1),那么此时的原型对象(Son.prototype)将包含一个指向另一个原型(Person... 阅读全文
posted @ 2013-05-21 21:19 烧点饭 阅读(5434) 评论(1) 推荐(1) 编辑
摘要: 1、组合使用构造函数模式和原型模式 创建自定义类型的最常见类型,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度的节省了内存。另外,这种混合模式还支持向构造函数传... 阅读全文
posted @ 2013-05-20 22:07 烧点饭 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,它的用途是包含可以有特定类型的所有实例共享的属性和方法。 prototype就是通过构造函数而创建的那个对象的原型对象。使用原型的好处就是可以让所有对象实例共享它所包含的属性和方法 。function Pe... 阅读全文
posted @ 2013-05-20 21:05 烧点饭 阅读(1970) 评论(0) 推荐(1) 编辑
摘要: 1.块级元素和行内元素的区别块级元素即使设置了宽度,仍然是独占一行的,块级元素可以设置margin和padding属性。行内元素的margin和padding属性只有水平边距,没有竖直边距。竖直方向的padding虽然增大了行内元素的面积,但并没有和相邻元素拉开距离。2.display:inline-block和hasLayout为了兼容IE6、IE7(不支持display:inline:block),我们真正能使用的display类型只有inline,block和none.display:inline-block集块级元素和行内元素的特点于一身。为了使IE6、IE7实现display:inl 阅读全文
posted @ 2013-05-19 21:46 烧点饭 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 模块拆分原则:1.模块与模块之间尽量不要包含相同的部分,如果有相同的部分,应将它们提取出来,拆分成一个独立的模块.2.模块应在保证数量尽可能少的原则下,做到尽可能的简单,以提高重用性。CSS调用:1.将相同的部分抽取出来单独成为一个calss2.多用组合,少用继承3.多使用<div calss="a b c"></a>,少使用<div class="a_b_c"></div>上下边距(Margin):1.如果不确定模块的上下margin特别稳定,最好不要讲它写到模块的类里,而使用类的组合,单独为上下marg 阅读全文
posted @ 2013-05-19 21:45 烧点饭 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 虽然Object构造函数或对象字面量都可以创建单个对象,但是这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量重复的代码。为了解决这个问题,就可以使用工厂模式来创建对象。1、工厂模式 在ECMAScript中是无法创建类的,开发人员就发明了一种函数,用函数来封装特定接口创建对象的细... 阅读全文
posted @ 2013-05-19 21:23 烧点饭 阅读(2933) 评论(0) 推荐(0) 编辑
摘要: ECMA-262定义了两个内置对象:Global和Math。1、Global对象 Global(全局)对象可以说是一个最特殊的对象,因为无论怎么看这个对象是不存在的,只要不是属于其他对象的属性和方法,都是Global对象的属性和方法。事实上,没有全局变量和全局函数;所有在全局作用域中定义的属性和... 阅读全文
posted @ 2013-05-18 14:24 烧点饭 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 为了便于操作基本类型值,ECMAScript还提供了三个特殊的引用类型:Boolean、Number和String。这些类型与其他引用类型相似,同时也具有与各自的基本包装类型相应的特殊行为。实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操... 阅读全文
posted @ 2013-05-18 13:50 烧点饭 阅读(1581) 评论(1) 推荐(0) 编辑
摘要: JavaScript具有自动垃圾回收机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。1、标记清除 JavaScript中最常用的垃圾收集方式是标记清除。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为"进入环境"。从逻辑上讲,永远不能释放进入环境的变量所占的内存,因... 阅读全文
posted @ 2013-05-17 22:20 烧点饭 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。我们编写的代码是无法访问这个对象的,但解析器在处理数据时会在后台使用它。 全局执行环境是最外围的一个执行环境,在Web浏览器中,全局执行环境被认为... 阅读全文
posted @ 2013-05-17 22:19 烧点饭 阅读(2317) 评论(0) 推荐(0) 编辑
摘要: ECMAScript的数组与其他语言中的数组有着相当大的区别。虽然ECMAScript中的数组也是有序列表,但是它数组你的每一项可以保存任何类型的数据。ECMAScript数组的大小是可以动态调整的。 创建数组的基本方式有两种。第一种是使用Array构造函数,如下所示:var colors =... 阅读全文
posted @ 2013-05-17 22:18 烧点饭 阅读(5106) 评论(1) 推荐(0) 编辑
摘要: 1.函数其实是对象,每个函数都是Function类型的实例,一样具有属性和方法,因此,函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。2.函数的声明:123function sum(num1,num2){ return num1+num2 }或者123var sum=function(num1,num2){ return num1+num2; };或者1var sum=new Function("num1","num2","return num1+num2"); //不推荐3.JavaScript中函数是没有重载的。123 阅读全文
posted @ 2013-05-17 22:17 烧点饭 阅读(1358) 评论(0) 推荐(0) 编辑
摘要: 1.CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都有可能不同)具有以下3种作用。 (1)用来存储相关指令的某些执行结果;(2)用来为CPU执行相关指令提供行为依据;(3)用来控制CPU的相关工作方式。这种特殊的寄存器在8086CPU中,被称为标志寄存器.本章中的标志寄存器(以下简称flag)使我们学习的最后一个寄存器.2.flag寄存器是按位起作用的,也就是说,它的每一个位都有专门的含义,记录特定的信息.3.flag的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何含义;0、2、4、6、7、8、9、10、11位都具有特殊的含义。4.flat的 阅读全文
posted @ 2013-01-11 15:36 烧点饭 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 1.call和ret指令都是转移指令,它们都修改IP的值,或同时修改CS和IP的值。它们经常共同用语实现子程序的设计。2.ret指令用栈中的数据,修改IP的内容,从而实现近转移。3.retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。4.CPU执行ret指令时,相当于进行: pop IP 执行retf指令时,相当于进行: pop IP pop CS5.CPU执行call指令时,进行两步操作: (1)将当前的IP或CS和IP压入栈中;(2)转移6.call指令不能实现短转移,call指令实现转移的方法和jmp指令的原理相同。7.call 标号(将当前的IP压栈后,转到标号处执行指令) 阅读全文
posted @ 2012-12-17 11:39 烧点饭 阅读(13754) 评论(0) 推荐(0) 编辑
摘要: 1.可以修改IP,或同时修改CS和IP的指令统称转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。2.8086CPU的转移行为有以下几种: (1)只修改IP时,称为段内转移。例如:jmp ax (2)同时修改CS和IP时,成为段间转移。例如:jmp 1000:03.由于转移指令对IP值修改范围的不同,段内转移又分为:短转移和近转移。 (1)短转移IP的修改范围是-128~127 (2)近转移IP的修改范围是-32768~327674.8086CPU的转移指令分为以下几类: (1)无条件转移指令(如:jmp) (2)条件转移指令 (3)循环指令(如:Loop) (4)过程 阅读全文
posted @ 2012-12-11 12:51 烧点饭 阅读(2465) 评论(0) 推荐(0) 编辑
摘要: 1.Debug和MASN中读取内存单元的区别:Debug中:mov ax,0ffffhmov ds,axmov al,[1]MASN中:mov ax,0ffffhmov ds,axmov bx,1mov al,[bx]或者mov ax,0ffffhmov ds,axmov al,ds:[1]2.Loop指令assume cs:codecode sementmov ax,2mov cx,3s: add ax,axloop scode ednsend 其中s为loop的标号,代表一个地址,它标识了一个地址,该表示可以随意命名,要与loop XX 相同即可;cx为循环次数,当执行loop s时,cx 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 1.assume cs:code,ds:data,ss:stackdata segmentds 0123h,1234h,2345h,3456h,4567h,5678h,6789h,789Ahdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,20h;设置ss:sp指向stack的栈顶mov ax,datamov ds,ax;ds指向data段mov bx,0;ds:bx指向打他段中的第一个单元mov cx,8s: push [bx]add bx,2loo 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 1.两个基本问题:(1)处理的数据在什么地方?(2)处理的数据有多长?2.寄存器集合(Reg):ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si; 段寄存器集合(sReg):cs,ds,ss,es;3.几种错误的指令:(1)mov ax,[cx](2)mov ax,[dx](3)mov ax,[dx](4)mov ax,[ds](5)mov ax,[bp+bx](6)mov ax,[si+di]4.处理可分为:读取、运算、写入,在及其指令这一层来讲,它并不关心所要处理的数据是多少,而关心指令执行前的那一刻,它将要处理数据所在的位置。5.立即数:对于 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 1.and指令:逻辑与指令,按位进行与运算。与1不变,与0变0,可将对象相应位设为0.2.or指令:逻辑或指令,按为进行或运算。或1变1,或0变0,可将对象位设为1.3.[BX+idata]的几种表现形式:(1)mov ax,[200+bx](2)mov ax,200[bx](3)mov ax,[bx].2004.[BX+idata]的数组处理案例assume CS:codesg,DS:datasgdatasg SEGMENTDB 'BaSiC'DB 'MinIX'datasg ENDScodesg SEGMENTstart:MOV AX,datasgMOV D 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(212) 评论(0) 推荐(0) 编辑
摘要: CPU中,用16位来存储一个字。高8位存放高位字节,低8位存放低位字节。内存存储中,内存单元是字节单元(1单元=1字节),则一个字要用两个地址连续的内存单元存放。内存存储中,高位字节,和低位字节是相对的,指令指向的是低位字节。字单元,即存放一个字型数据(16位=2字节)的内存单元,由两个地址连续的内存单元组成。8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。MOV指令的几种种功能:将数据直接送入寄存器 mov ax,1000H将一个寄存器中的内容送入另一个寄存器 mov ax,bx;mov ds,ax将一个内存单元中的内容送入寄存器 mov ax,[...]将寄存器中的内容送 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 一个典型的CPU使用运算器、控制器、寄存器等组成的。8086CPU有14个寄存器,AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,其中有8个是通用寄存器。8086CPU所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX通常用来存放一般性数据被成为通用寄存器。8086CPU为了兼容上一代的8位CPU,AX、BX、CX、DX这四个可以分为两个独立的8位寄存器。比如AH(高位)和AL(低位)。1字=2字节=16位(1Word=2Byte=16bit)。CPU访问内存时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(1045) 评论(0) 推荐(0) 编辑
摘要: 1.一个最简单的汇编语言源程序:assume cs:codesgcodesg segmentmov ax,0123Hmov bx,0456Hadd ax,bxadd ax,axmov ax,4c00Hint 21Hcodesg endsend2.assume是“假设”的意思,它是将有特定用途的段和相关段寄存器关联起来的。3.sgment和ends是一对成对使用的伪指令,也是一边必须用到的伪指令,xxxx segment用来声明该段的名称,中间则是存放汇编指令。4.end是一个汇编程序的结束标记。5.一个有意义的汇编程序必须有一个代码段。6.一个程序结束后,会将CPU的控制权交还给使他运行的程序 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 1.汇编语言有三类指令组成汇编指令:有对应机器码伪指令:没有对应机器码,有编译器执行其他符号:如+,-,*,/,由编译器识别汇编语言的核心是汇编指令,它决定了汇编语言的特性。2.一个内存单元=1Byte=8bit。3.CPU要进行读写(外部通讯)需要进行以下三个交互地址总线数据总线控制总线4.CPU是通过地址总线来指定存储单元的。5.一个CPU有N根地址总线,则可以说这个CPU的地址总线宽度为N,这样的CPU可以寻找到2的N方个内存单元。6.CPU与内存或其他部件之间的数据传送是通过数据总线来进行的。7.数据总线决定了CPU与外界数据传输的速度。8.8根数据总线可以传送一个8位二进制数据(即一 阅读全文
posted @ 2012-12-10 14:56 烧点饭 阅读(264) 评论(0) 推荐(0) 编辑