this默认情况下 只是只当前环境下
只有函数一对象属性的形式出现时该方法的this指向的是当前的对象
如果不以对象属性出现的函数this指向window,也就是说普通函数指向的window
修改this指向
// 1. 可以使用把this赋值给selflet self = this// 2. 也可以利用map的第二个参数把this传递进去let Lesson = {site: 'houduan',list: ['22', 'qq', '22'],show: function() {return this.list.map(function(valye) {console.log(this.site)// 输出 houduan}, this)}}//3 使用箭头函数可以解决函数不以类属性出现时this指向window的问题也就是说 在箭头函数中的this指向的就是上下文也就是父级的this,普通函数指向的就是windowlet Lesson = {site: 'houduan',list: ['22', 'qq', '22'],show: function() {return this.list.map(valye => {console.log(this.site)// 输出 houduan})}}// 4. call[多个参数]/apply[数组]区别就是传递的参数不同,并且会立刻执行let lisi = {name: '李四'}let wangwu = {name: '王武'}function User(a, b) {console.log(a + b + this.name)}User.call(lisi, 'a', 'b') // 输出 ab李四User.apply(wangwu,['a', 'b']) // 输出 ab王武// 5.bind 不会立即执行。只会得到新的函数。
