05 2013 档案
摘要:1.闭包与变量 JavaScript中的作用域链的机制引出了一个副作用,即闭包只能取得包含函数中任何变量的最后一个值。闭包所保存的是整个变量对象,而不是某个特殊的值。1234567891011121314function createFunctions(){ var result=new Array(); for (var i=0;i<10;i++){ result[i]=function(){ ...
阅读全文
摘要:JavaScript中是没有块级作用域概念的。也就是说,在块级语句中定义的变量,实际上是在包含函数中(外部函数)而非语句中创建的。123456function outputNumber(count){ for(var i=0;i<1000;i++){ alert(i); } alert(i); //count }该函数在java、C#等语言中,变量i只会在for循环语句中有定义,循环结束,i也就被...
阅读全文
摘要:闭包是指有权访问另一个函数作用域的变量的函数。 创建闭包的常见方式,就是在函数内部创建一个函数。 1 2 3 4 5 6 7 8 9 10 11 12 13 function creteComparisonFunction(...
阅读全文
摘要:前面讲过,定义函数的方式有两种:一种是函数声明,另一种是函数表达式。函数声明: 123function functionName(arg0,arg1,arg2){ //函数体 }关于函数声明,一个重要的特征就是函数声明提升,意思就是在执行代码之前会先读取函数声明。这就意味着可以把函数声明放到调用它的语句之后。函数表达式:123var functionName=function(arg0,arg1,...
阅读全文
摘要:1.借用构造函数在解决原型中包含引用类型值所带来的问题的过程中,我们可以使用一种叫借用构造函数的技术(又称伪造对象或经典继承)。就是在子类型构造函数的内部调用父类型构造函数,记住,函数只不过是在特定环境中执行代码的对象,可以通过使用apply()和call()方法也可以在(将来)新创建的对象上执行构造函数。123456789101112131415function SuperType(){ thi...
阅读全文
摘要:1.原型链原型链是JavaScript中继承的主要方法。每个构造函数都拥有一个原型对象,原型对象都包含一个指向构造函数的指针(constructor),实例都包含一个指向原型对象的内部指针(__proto__)。假如,原型对象(Son.prototype)等于另一个类型(Pserson)的实例(person1),那么此时的原型对象(Son.prototype)将包含一个指向另一个原型(Person...
阅读全文
摘要:1、组合使用构造函数模式和原型模式 创建自定义类型的最常见类型,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度的节省了内存。另外,这种混合模式还支持向构造函数传...
阅读全文
摘要:我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,它的用途是包含可以有特定类型的所有实例共享的属性和方法。 prototype就是通过构造函数而创建的那个对象的原型对象。使用原型的好处就是可以让所有对象实例共享它所包含的属性和方法 。function Pe...
阅读全文
摘要: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
阅读全文
摘要:模块拆分原则:1.模块与模块之间尽量不要包含相同的部分,如果有相同的部分,应将它们提取出来,拆分成一个独立的模块.2.模块应在保证数量尽可能少的原则下,做到尽可能的简单,以提高重用性。CSS调用:1.将相同的部分抽取出来单独成为一个calss2.多用组合,少用继承3.多使用<div calss="a b c"></a>,少使用<div class="a_b_c"></div>上下边距(Margin):1.如果不确定模块的上下margin特别稳定,最好不要讲它写到模块的类里,而使用类的组合,单独为上下marg
阅读全文
摘要:虽然Object构造函数或对象字面量都可以创建单个对象,但是这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量重复的代码。为了解决这个问题,就可以使用工厂模式来创建对象。1、工厂模式 在ECMAScript中是无法创建类的,开发人员就发明了一种函数,用函数来封装特定接口创建对象的细...
阅读全文
摘要:ECMA-262定义了两个内置对象:Global和Math。1、Global对象 Global(全局)对象可以说是一个最特殊的对象,因为无论怎么看这个对象是不存在的,只要不是属于其他对象的属性和方法,都是Global对象的属性和方法。事实上,没有全局变量和全局函数;所有在全局作用域中定义的属性和...
阅读全文
摘要:为了便于操作基本类型值,ECMAScript还提供了三个特殊的引用类型:Boolean、Number和String。这些类型与其他引用类型相似,同时也具有与各自的基本包装类型相应的特殊行为。实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操...
阅读全文
摘要:JavaScript具有自动垃圾回收机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。1、标记清除 JavaScript中最常用的垃圾收集方式是标记清除。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为"进入环境"。从逻辑上讲,永远不能释放进入环境的变量所占的内存,因...
阅读全文
摘要:执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。我们编写的代码是无法访问这个对象的,但解析器在处理数据时会在后台使用它。 全局执行环境是最外围的一个执行环境,在Web浏览器中,全局执行环境被认为...
阅读全文
摘要:ECMAScript的数组与其他语言中的数组有着相当大的区别。虽然ECMAScript中的数组也是有序列表,但是它数组你的每一项可以保存任何类型的数据。ECMAScript数组的大小是可以动态调整的。 创建数组的基本方式有两种。第一种是使用Array构造函数,如下所示:var colors =...
阅读全文
摘要: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
阅读全文