拷贝和闭包

拷贝 复制
var abc =123
var abc2 = abc
浅拷贝:指的是对象之间的拷贝
var obj = { a : ’ 1 ’ , b : ’ 2 ’ }
var obj2 = obj
这不是拷贝 拷贝的只是对象的地址
通过循环obj获取其中一个的每一个属性 复制给obj2这才叫拷贝 浅拷贝

深拷贝:
前提条件:被拷贝的对象,一个多层嵌套的对象
var obj = {
a:1
b:2
c:{
(property)e :number
e:4
}
}
如果还是通过简单的for-in循环 把obj中所有的属性 遍历 赋值给一个新的对象 此刻
c属性 赋值的是什么?
通过递归的办法 把c也进行for in 然后赋值到新的对象中

闭包:
一个局部作用域访问另一个局部作用域中的成员
在for循坏中,用定时器打印,每一个i要求i的值不同

for(let i = 0;i <10;i++) {
	setTimeout( ( ) => {
	console.log(i)
	})
}
打印的是1010
//js的函数作用域 一个函数就是一个肚子作用域
//能不能再每一次循环的时候 创建一个独立的作用域
for(var i = 0;i<10;i++) {
	(function(i) {    //自调用函数
		setTimeout(() => {
			console.log(i)
		})
	}) (i)  //调用函数
}

你可能感兴趣的:(拷贝和闭包)