1.闭包概念
理解闭包的前提:当某个函数被调用时,会创建一个执行环境及相应的作用域链。然后使用arguments和其他命名参数的值来初始化函数的活动对象。但在作用域链中,外部函数的活动对象始终处于第二位,外部函数的外部函数处于第三位,…直至作为作用域重点的全局执行环境。
2.使用new调用函数或者说发送构造函数调用会自动执行以下操作
- 创建一个全新的对象。
- 这个新对象会被执行[[原型]]连接。
- 这个新对象会绑定到函数调用的this。
- 如果函数没有返回其他对象,那么new表达式中的函数调用回自动返回这个对象。
3.js严格模式下this的指向
- 全局作用域中的this
在严格模式下,在全局作用域中,this指向window对象,在函数中的this等于undefined - 对象的函数(方法)中的this
在严格模式下,对象的函数(方法)中的this指向调用函数的对象实例 - 构造函数的this
在严格模式下,构造函数中的this指向构造函数创建的对象实例 - 事件处理函数中的this
在严格模式下,在事件处理函数中,this指向触发事件的目标对象
例:1
2
3
4
5
6
7
8
9
10function blue_it(e){
if(this === e.target){
this.style.backgroundColor = "#00f";
}
}
var elements = document.getElementsByTagName('*');
for(var i=0 ; i<elements.length ; i++){
elements[i].onclick = blue_it;
}
//这段代码的作用是使被单击的元素背景色变为蓝色