JS基础2.0

1. js闭包

定义: 闭包就是能够读取其他函数内部变量的函数
作用: 读取其他函数内部变量的函数,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁

1.1 优劣势
	优:可以让函数的局部变量保存在内存中,实现局部变量、数据共享
	劣:
		1.变量无法被回收,内存消耗大
		2.闭包会在父函数外部,改变父函数内部变量的值(数据不安全)

2. 对象属性检测

	2.1 in
		propertyName in Obj
		会从对象的实例属性、继承属性里进行检测

	2.2 hasOwnProperty
		obj.hasOwnProperty(propertyName)
		只会检测本身是否包含指定属性,不会检测继承的属性

3. js this关键字

分类:
	1. 当函数有所属对象时,函数内的this指向所属对象
	2. 当函数没有所属对象时,this指向window对象
	(以上俩点可以总结为:函数内部的this对象指向函数的调用者(拥有者))
	3. 构造器中的 this:指向新对象,通过 new 关键词来调用构造函数,此时 this 会绑定在该新对象上	

	4. 如果构造函数返回一个对象,那么this指向函数本身

4. call和apply

call:
	将函数指定到指定的作用域中执行(改变this的指向)
	b.call(a);	解:通过在call方法,把函数b添加到a的作用域环境中执行(函数b中this指向a)
参数:
call(作用域,参数1,参数2....) 参数1,参数2....:被调用函数自身的参数

apply
	作用与call一致
参数:
apply(作用域,[参数1,参数2....]) apply第二个参数为数组,存储函数自身的参数集合

4.1 注意点 
	当call和apply没有指明作用域时,默认会指向window

猜你喜欢

转载自blog.csdn.net/qq1765911750/article/details/83146901