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)中有详细描述,但超出了本文要讨论的范畴。

转载于:https://www.cnblogs.com/lost2x/archive/2011/08/12/2136770.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值