一、执行上下文
参考blog:https://blog.csdn.net/qqchenyufei/article/details/82795713
1、GEC(Global Execution Context)
2、前一个VO能自由访问到下一个VO上的变量,后一个不能访问前一个。
作用域链顺序执行问题特别重要!!!请见参考链接,里面说得很清楚了。
3、闭包思考:
setTimeout利用闭包让循环输出的结果依次为1, 2, 3, 4, 5
for (var i = 1; i <= 5; i++) {
(function (i) {
setTimeout(function timer() {
console.log(i);
}, i * 1000)
})(i);
}
二、this 指针
在Java中,我们都知道,构造函数里面都含有默认的this指针,就隐藏在第一个参数的那个位置。js 其实也一样,js 在new对象的时候,this指针是如何发挥作用的呢? 在一个函数上下文中,this由调用者提供,由调用函数的方式来决定。 如果调用者被某对象所拥有,那么该函数在调用时,内部的this指向该对象。 如果函数独立调用,那么该函数内部的this,则指向undefined。 但是在非严格模式中,当this指向undefined时,它会被自动指向全局对象。 如下图:
1、此处的this 指向的是 window 2、此处的 this 指向的是 window 和 obj 3、此处的 this 指向的是 obj
使用call()和apply()方法时,就会改变this的指向 obj1.(method).call(obj2,argument1,argument2) call 的作用就是把 obj1 的方法放到 obj2 里面使用
4、此处的 this 指向的是window,
|