关于js的闭包和复制对象】的更多相关文章

一.有关js的闭包 1.概念:所谓的闭包,就是指的两个作用域,其中内层作用于可以访问外层作用域的函数的现象 2.简单应用 for(var i = 0;i< lis.lenth;i++){ (function(i){ lis.onclick = function(){ alert(i); } })(i); } 二.复制对象 1.所谓的复制对象,其实就是用到了递归的思想 2.简单应用 var obj = {name:"zs",age:12,hobby:["sleep&quo…
学习js时候,读到几篇不错的博客.http://www.cnblogs.com/yexiaochai/p/3802681.html一,作用域 和C.C++.Java 等常见语言不同,JavaScript 的作用域不是以花括号包围的块级作用域(block scope),这个特性经常被大多数人忽视,因而导致莫名其妙的错误.例如下面代码,在大多数类C 的语言中会出现变量未定义的错误,而在JavaScript 中却完全合法: if(true) { var somevar = 'value'; } con…
首先讲一讲执行环境: 执行环境按照字面上来理解就是指目前代码执行所在的环境. 当JavaScript代码执行的时候,会进入不同的执行上下文,这些执行上下文会构成了一个执行上下文栈(Execution context stack,ECS). 执行环境的分类 全局执行环境: 在浏览器中,其指window对象,是JS代码开始运行时的默认环境. 全局执行环境的变量对象始终都是作用域链中的最后一个对象. 函数执行环境: 当某个函数被调用时,会先创建一个执行环境及相应的作用域链.然后使用arguments和…
1.以前很不理解js中闭包的概念及使用,下面来看一下 function foo() { var a = 123; var b = 456; return function () { return a; } } var fn = foo(); 上面的代码只能访问 a和b,但是不能修改,这是js中闭包的技术之一 function foo() { var a = 123; var b = 456; return { get_a: function () { return a; }, set_a: fu…
JavaScript的Deferred是比较高大上的东西,  主要的应用还是主ajax的应用,  因为JS和nodeJS这几年的普及,  前端的代码越来越多,  各种回调套回调再套回调实在太让人崩溃, 所以就从后端拖了一个延迟对象这货, 用来解决回调地狱这个问题 .  我们使用ajax的时候多数都是为ajax添加回调 ,然后异步向服务器发送请求, 比如如下原生的XHR代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/…
js中闭包这个概念对于初学js的同学来说, 会比较陌生, 有些难以理解, 理解起来非常模糊. 今天就和大家一起来探讨一下这个玩意. 相信大家在看完后, 心中的迷惑会迎然而解. 闭包概念: 闭包就是有权访问另一个函数作用域中变量的函数. 分析这句话: 1.闭包是定义在函数中的函数. 2.闭包能访问包含函数的变量. 3.即使包含函数执行完了, 被闭包引用的变量也得不到释放. 例子分析-1: function add(){ var i = 0 arr = []; for(; i < 10; i++){…
js有一个东西叫做GC(garbage collection )垃圾回收机制;js中有两种类型:js基本数据类型,js引用类型; 当一个函数[对象]--引用类型被引用后,过后,出了它的功能之后,gc会将其马上回收,以免占用.仅且仅有引用类型会 产生闭包.如果一个函数的应用结束了,心里想:我总算可以离开内存(公司)了,就走了,但是有的时候啊,别的函数会引用到他内部 的变量,就如同公司需要他的脑力,但是不需要容貌,没办法,他还是只能够留下来在内存中(公司),所以没有回收,所以驻留!如下面的实例和解释…
在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复杂数据类型包括Object,而所有其他引用类型(Array.Date.RegExp.Function.基本包装类型(Boolean.String.Number).Math等)都是Object类型的实例对象,因此都可以继承Object原型对象的一些属性和方法. 而对于基本数据类型来说,复制一个变量值,…
前言 for,slice(0),concact() 在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝.如下图演示:  如上,arr的修改,会影响arr2的值,这显然在绝大多数情况下,并不是我们所需要的结果. 因此,数组以及对象的深拷贝就是JavaScript的一个基本功了. 数组的深拷贝 条条大道通罗马,实现数组的深拷贝,是有好几种方法的.举例如下: for 循环实现数组的深拷贝 for循环是非常好用的.如果不知道高级方法,通过for循环能够完成我们大多数的需求. var arr…
JS的闭包,是一个谈论得比较多的话题了,不过细细想来,有些人还是理不清闭包的概念定义以及相关的特性. 这里就整理一些,做个总结. 一.闭包 1. 闭包的概念 闭包与执行上下文.环境.作用域息息相关 执行上下文 执行上下文是用于跟踪运行时代码求值的一个规范设备,从逻辑上讲,执行上下文是用执行上下文栈(栈.调用栈)来维护的. 代码有几种类型:全局代码.函数代码.eval代码和模块代码:每种代码都是在其执行上下文中求值. 当函数被调用时,就创建了一个新的执行上下文,并被压到栈中 - 此时,它变成一个活…