初学javascript,望各位大神不吝赐教我知道this的指向一般分4种情况:(1)作为构造函数调用,指向构造函数生成的对象;(2)作为函数调用,指向去全局变量(3)作为对象的方法调用,指向到该对象(4)使用call或者apply方法,this指定call或者apply方法指定的执行环境。。但是,第二点似乎跟书中有一些区别:this引用的是函数据以执行的环境对象。(JavaScript高级程序设计)这是对this的描述。JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里。(JavaScript高级程序设计)这是对函数运行的描述。functionf1(){console.log(this);//Windowfunctionf2(){console.log(this);//Window}f2();}f1();而在上述这段代码中,函数f1()和f2()的this都绑定到了全局变量,而照书中说法,f2()的作用域链在定义的时候应该为:[[scopechain]]=[{f1的变量对象},{windowcallobject}]在函数f2进入执行流后,会将f2的活动对象作为变量对象加到作用域链的最前端,此时f2()的作用域链为:[[scopechain]]=[{f2的活动对象},{f1的变量对象},{windowcallobject}]那么,this应该绑定到f1上才对,为什么还是绑定到了window对象呢?
aluckdog
神不在的星期二
相关分类