JavaScript 闭包环境很奇特 - 相当于类与实例的关系?!

JavaScript 闭包环境很奇特 - 相当于类与实例的关系?!

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

又一个疑问贴!

不过我相信,问题并不是难在如何解决,最终就是个能解决与不能解决,这很容易!

但当你无法决断是否能否解决,与如何解决的时侯,这才是最让人纠结的事情。谁说不是呢?!

JavaScript 指南 - 闭包 

这篇转载,看了三遍了,好像没记住太多,不过有些明白了,闭包的含义,这当然得包括它的习性,要不怎么能算得上了解呢。

下面是一个更有意思的示例 — makeAdder 函数:

function makeAdder(x) {
  return function(y) {
    return x + y;
  };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);

print(add5(2));  // 7
print(add10(2)); // 12

在这个示例中,我们定义了 makeAdder(x) 函数:带有一个参数 x 并返回一个新的函数。返回的函数带有一个参数 y,并返回 x 和 y 的和。

是否可以这样理解,闭包中的函数或变量有被外部引用,这个闭包环境就一直存在着,以便其内部类或变量参与运算时,环境还在。
那么再或者,这个闭包是否可以当成是一个类呢?而其实例对象确是个看不到摸不着,确能随其成员的销毁而销毁的后台英雄呢,这就是闭包环境吧,也就是闭包相当于类,闭包环境相当于类的实例,拥有着一份独一无二,不随类存在的成员变量环境。

而且,闭包可以定义的同时执行,那必须在后面加上 (),这就是函数调用的那两个左右括号。

但到目前尚未找到我需要的部分,难道还有其它的执行方式?

时间: 2024-11-03 15:39:35

JavaScript 闭包环境很奇特 - 相当于类与实例的关系?!的相关文章

Java判断类和实例的关系

   通常我们使用instanceOf关键字来判断一个对象是否是类的实例,最近博主看到isInstance关键字,不解与instanceOf的区别,故度娘了一下,顺便涨了一下姿势.    Java中判断类和实例的关系有3个关键字:instanceof, isInstance以及isAssignableFrom. instanceof:用来判断对象是否是类的实例 isInstance:用来判断对象是否属于某个类型的实例 isAssignableFrom:用来判断类型间是否存在派生关系   看完上面

JavaScript高级程序设计 读书笔记之八 Function类及闭包_javascript技巧

Function类 定义 Function类可以表示开发者定义的任何函数,用Function类直接创建函数的语法如下: var function_name=new Function(agrument1,agrument2,...,argumentN,function_body); 每个argument都是一个参数,最后一个参数是函数主体(要执行的代码). 示例: 复制代码 代码如下: function sayHi(sName,sMessage){ alert("Hello "+sNam

全面理解Javascript闭包和闭包的几种写法及用途

原文:全面理解Javascript闭包和闭包的几种写法及用途 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途. 一.什么是闭包和闭包的几种写法和用法                                                       1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函

深入解析Javascript闭包的功能及实现方法_javascript技巧

一.什么是闭包和闭包的几种写法和用法                                                      1.什么是闭包闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1). 作为一个函数变量的一个引用,当函数返回时,其处于激活状态. 2). 一个闭包就是当一个函数返回时,一个没有释放资源的栈区. 简单的说,Javascript允许使用内部函数-即函数定义和函数表达式

理解javascript闭包

原文:理解javascript闭包 1.闭包是什么 官方解释:闭包是一个拥有很多变量和绑定了这些变量的环境的表达式(其实就是函数),因而这些变量也是该表达式的一部分.这个定义虽然太学术,但是告诉我们两个信息: 1)闭包是一个函数 2)函数中有很多变量 上面两个是构成闭包的两个主要条件. 下面我们用通俗的话来解释一下:js中的所有函数都是闭包(因为函数中的局部变量只能函数内部访问),但是嵌套函数产生的闭包更加强大,也是我们现在所探讨的闭包. 如果上面的解释还不够通俗,下面的终极解释我想你一定能够看

基于javascript 闭包基础分享

如果对作用域,函数为独立的对象这样的基本概念理解较好的话,理解闭包的概念并在实际的编程实践中应用则颇有水到渠成之感. 在DOM的事件处理方面,大多数程序员甚至自己已经在使用闭包了而不自知,在这种情况下,对于浏览器中内嵌的JavaScript引擎的bug可能造成内存泄漏这一问题姑且不论,就是程序员自己调试也常常会一头雾水. 用 简单的语句来描述JavaScript中的闭包的概念:由于JavaScript中,函数是对象,对象是属性的集合,而属性的值又可以是对象,则在函数内 定义函数成为理所当然,如果

JavaScript闭包实例详解_javascript技巧

一.充电 1.一切(引用类型)都是对象,对象是属性的集合. 2.函数是一种对象,但是函数却不像数组一样--你可以说数组是对象的一种,因为数组就像是对象的一个子集一样.但是函数与对象之间,却不仅仅是一种包含和被包含的关系,函数和对象之间的关系比较复杂,甚至有一点鸡生蛋蛋生鸡的逻辑. function Fn() {this.name = '王福朋';this.year = 1988;} var fn1 = new Fn(); var obj = { a: 10, b: 20 };等价于var obj

JavaScript 闭包深入理解(closure)_javascript技巧

一.什么是闭包? "官方"的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.相信很少有人能直接看懂这句话,因为他描述的太学术.其实这句话通俗的来说就是:JavaScript中所有的function都是一个闭包.不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的"闭包".看下面这段代码: function a() { var i = 0; function b() { a

JavaScript 闭包详细介绍_基础知识

深入理解JavaScript--闭包 跟很多新手一样我也是初入前端,对闭包的理解花费的时间和精力相当的多.效果也还行,今天我就来根据自己的理解细致的讲一讲闭包,由于是初入学习的时候不免有一些弯路和困惑,我想信这也是很多跟我一样的人会同样遇到的问题.我就以自己的学习路径和遇到的各种坑来谈闭包.希望对各位有一定的帮助.(菜鸟,也请各位多多指教) 闭包是什么?<JavaScript高级程序设计>上面这么描述的:闭包是指有权访问另一个函数作用域中的变量的函数.这句话第一次看的时候模模糊糊,似是而非.碰