JavaScript 闭包笔记

 1、闭包定义

允许使用内部函数--即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

2、背景知识

对象

ECMAScript 认可两类对象

原生(Native)对象——属于语言

宿主(Host)对象——由环境提供

创建属性

可以动态、松散的给对象增加属性。

var obj=new Object(); //创建一个javascript对象

obj.testNumber = 5; //新建名为 “testNumber” 的属性,这个属性在赋值后才新建。

读取属性

var objectRef = new Object(); 

创建一个普通的 JavaScript 对象。该对象的原型为Object.prototype的对象,而Object.prototype的对象拥有一个值为 null 的原型。这样就构成了所谓的原型链。原型链终止于链中原型为 null 的对象。

当某个属性访问器尝试读取由对象的属性值时,整个原型链都会被搜索,如果没有找到任何对象有该属性,则最终返回undefined。

注意:ECMAScript 为 Object 类型定义了一个内部 [[prototype]] 属性。这个属性不能通过脚本直接访问,但在属性访问器解析过程中,则需要用到这个内部 [[prototype]] 属性所引用的对象链--即原型链。可以通过一个公共的 prototype 属性,来对与内部的 [[prototype]] 属性对应的原型对象进行赋值或定义。这两者之间的关系在 ECMA 262(3rd edition)中有详细描述,但超出了本文要讨论的范畴。

posted @ 2011-08-12 22:55  lost2x  阅读(187)  评论(0编辑  收藏  举报