js严格模式与非严格模式下的this的绑定

对比

情况 严格模式 非严格模式
全局作用域下,普通的this window  window 
全局作用域下,独立函数中的this undefined window 
对象中的函数的this 调用函数的对象实例 调用函数的对象实例
构造函数中的this 构造函数创建的对象实例 构造函数创建的对象实例
事件绑定中的对象this 触发该事件的对象 触发该事件的对象
定时器函数中的this window window
立即执行函数中的this window window

面试题

'use strict';
var name = 'window';

var person1 = {
  name: 'person1',
  show1: function () {
    console.log(this.name);
  },
  show2: () => console.log(this.name),
  show3: function () {
    return function () {
      console.log(this.name);
    };
  },
  show4: function () {
    return () => console.log(this.name);
  },
};
var person2 = { name: 'person2' };

person1.show1(); //person1
person1.show1.call(person2); //person2

person1.show2(); // 严格模式为undefined
person1.show2.call(person2); //严格模式为undefined

person1.show4()(); //person1
person1.show4().call(person2); //person1
person1.show4.call(person2)(); //person2

person1.show3().call(person2); //person2
person1.show3()();   //报错



猜你喜欢

转载自blog.csdn.net/m0_50789696/article/details/129375753