摘要: 由于JavaScript没有块级作用域的概念。这意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的, 这个函数中定义了一个for循环,而变量i的初始值被设置为0.在Java C++等语言中,变量i只会在for循环的语句块中有定义,循环一旦结束,变量就会被销毁。 在JavaScript中 阅读全文
posted @ 2016-07-02 22:32 czhyuwj 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 内存泄漏 如果闭包的作用域链中保存着一个HTML元素,那么就意味着该元素将无法被销毁。 而这个闭包则又创建另一个循环引用。由于匿名函数保存了一个对 assignHandler()的活动对象的引用,因此就会导致无法减少 element 的引用数。只要匿名函数存在,element 的引用数至少也是1,因 阅读全文
posted @ 2016-07-02 21:46 czhyuwj 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 关于this对象 在闭包中使用this对象也可能会导致一些问题。this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window, function createFunction(){ alert(this); }; createFunction(); // window 而当 阅读全文
posted @ 2016-07-02 21:25 czhyuwj 阅读(863) 评论(0) 推荐(1) 编辑
摘要: 前面几篇文章中提到过,作用域链以及闭包的概念,这里就不一一重复了, 作用域链的这种配置机制引出了一个值得注意副作用,既闭包只能取得包含函数中任何变量的最后一个值。别忘了闭包所保存的是整个变量对象,而不是某个特殊的变量。 function createFunctions(){ var result = 阅读全文
posted @ 2016-07-02 19:30 czhyuwj 阅读(1122) 评论(0) 推荐(0) 编辑
摘要: 谈到闭包,人们常常会把匿名函数和闭包混淆在一起。闭包是指由权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个函数,仍以前面的 createComparisonFunction()函数为例 在标识的部分,它访问了外部的变量 propertyName 即使这个函数被返 阅读全文
posted @ 2016-06-26 21:56 czhyuwj 阅读(408) 评论(3) 推荐(0) 编辑
摘要: 函数表达式 函数表达式的特征 声明方式: 1> 函数声明 2> 函数表达式 函数声明如下: 表达式声明 第一种方式:关于函数声明主要是:函数声明提升,意思是在执行代码之前会先读取函数声明。这就意味着可以把函数声明放在调用它的后面。 第二种方式:表达式声明,在这种情况下创建函数叫做匿名函数,因为fun 阅读全文
posted @ 2016-06-25 22:36 czhyuwj 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 创建对象方式: 工厂模式:使用简单的函数创建对象,为对象添加属性和方法,然后返回对象; 构造函数模式: 原型模式: 优点是属性函数共用;缺点:<1> 省略了构造函数的传参,生成所有实例在默认情况下都取得相同的属性值。<2> 最大问题还是其共用本质引起来的 组合使用构造函数模式和原型模式 动态原型模式 阅读全文
posted @ 2016-06-25 20:55 czhyuwj 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 组合继承在前面有说过,也是JavaScript中最常用的一个继承模式;不过,它也有自己的不足。组合继承最大的问题就是无论什么情况,都会调用两次构造函数: 那我们来回顾下组合式继承基本模式: 上面红色标识的是调用构造函数的地方,在第一次调用SuperType 函数时,SubType.prototype 阅读全文
posted @ 2016-06-25 18:24 czhyuwj 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 寄生式继承 寄生式继承是于原型式继承紧密相关的一种思路。寄生式基础的思路与寄生构造函数和工厂模式类似,既创建一个仅用于封装继承过程的函数,该函数内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。 以下代码示范了寄生式继承模式。 function object(o){ functio 阅读全文
posted @ 2016-06-25 17:05 czhyuwj 阅读(2969) 评论(2) 推荐(0) 编辑
摘要: 思想:借助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。为了达到这个目的,看看下面的实现方式 在上面的代码段中主要做了哪些事情尼? 创建了一个临时的构造函数,同时把传入参数作为临时构造函数的原型,最后返回一个临时构造函数的实例;从本质上来讲,object 对传入其中的对象执行了一次 阅读全文
posted @ 2016-06-25 16:29 czhyuwj 阅读(193) 评论(0) 推荐(0) 编辑