Javascript中级
1.作用域链:
作用域:浏览器给js的一个生存环境(栈内存)
作用域链:js中的关键字,var和function都可以提前声明和定义,提前声明和定义的放在我们的内存地址(堆内存)中。然后js从上到下逐层执行,遇到变量就去内存地址查找是否存在这个变量,有就使用,没有就继续向父级作用域查找直到window下结束,这种查找机制叫作用域链。
js代码中存在着大量的变量跟函数
2.This、
1.this是js的一个关键字,指定一个对象然后去代替他
函数内的this——函数外的this
函数内this:指向行为发生的主体 函数外this:指向window没有意义
function chifan(){
console.log(this)
}
banzhang.chifan() banzhang就是这个函数的主体
2. 函数内的this和函数在什么环境下定义没有关系,只和自己的主体有关。
3. 主体怎么找?
就看这个函数(方法)带不带 .
如果函数和方法执行带 . 那么this就指向 . 前面的对象 、
如果不带 . 就指向window
4. 自执行函数里面的this都指向window
this和变量面试题,先找this的主体是谁,然后把它换成那个主体
5. 给元素的某一个事件绑定方法,当事件触发时,执行绑定的方法,方法中的this指向当前元素
function fn(){
console.log(this)
}
document.getElementById(“div”). onclick=function(){
console.log(this) || div
fn() || window
}
document.getElementById(“div”). onclick=fn;
重点是函数套用的时候:
不管他怎么定义,就看他执行时候的主体
1.怎样查找变量和函数的归属
2.怎样查找this的指向
函数内部的this跟函数在哪定义没有关系,只跟在执行时的主体有关
带. 的主体就是 . 前面的对象;不带 . 就是window