ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[danger] 谈谈this指向的问题 ***** 参考: 1. ES5中, this在函数中, 代表调用函数的那个对象 2. ES6中, this指向外层作用域this的指向 3. 浏览器环境this默认指向window, 全局变量挂在this上 4. 但是nodeJS下全局变量不是挂在window上的 扩展: 1. ES5中, 一般在函数外部利用变量接收this指向, 在函数内部用这个变量代表外层this指向的值. 2. 严格模式下, this无法指向window, this的值是undefined 3. this变量无法重新赋值 ***** >[danger]详细解释this 1. this绑定规则有 (1) 默认绑定 ----例如: fn1(), 方法里this指向默认window (2) 隐式绑定 ----例如: myObj.fn1(), 方法里this指向对象myObj (3) 硬绑定 ----使用call和apply, 会触发某个方法, 并且传入this该指向的对象 如果不传或者传null, 还是默认该指向谁就指向谁 ----还使用bind, 但是不会马上触发方法 call/apply代码例如: ``` var a = 20; var obj = { a: 10, } function myT(){ console.log(this.a); // 10 } myT.call(obj); // myT.apply(obj); 结果是一样的, 如果传myT.call(null)结果就是20 ``` ``` var a = 20; var obj = { a: 10, } function myT(){ console.log(this.a); // 10 } myT.bind(obj)(); ``` (4) new 绑定 ---- 默认配合构造函数使用, 使this指向新的对象 > 绑定优先级 new > 硬绑定 > 隐式 > 默认