this指向2
箭头函数会捕获上下文的this,将其转化为自己this,而普通函数不会。
// 调用方式 this指向
// 普通函数调用 window
// 构造函数调用 实例对象 原型对象里面的方法也指向实例对象
// 对象方法调用 该方法所属对象
// 事件绑定方法 绑定事件对象
// 定时器函数 window
// 立即执行函数 window
// 箭头函数 没有自己的this 箭头函数没有自己的this关键字,如果在箭头函数中使用this,this关键字将指向箭头函数定义位置中的this
//1.普通函数
function fn() {
console.log('普通函数的this' + this);
}
window.fn()
//2.对象的方法
var o = {
sayHi: function () {
}
}
o.sayHi()
//3.构造函数 this指向ldh这个实例对象 原型对象里面的this指向的也是ldh这个实例对象
function Star() {}
Star.prototype.sing = function () {
}
//4.绑定事件对象
var btn = document.querySelector('button');
btn.onclick = function () {
console.log('绑定事件函数的this' + this);
}
// 5.定时器函数
window.setTimeout(function () {
console.log('定时器的this' + this);
}, 1000);
//6.立即执行函数
(function () {
console.log('立即执行函数的this' + this);
})()
//7.箭头函数
function fn() {
console.log(this);
return () => {
console.log(this);
}
}
const obj = {
name: 'zhangsan'
};
const resFn = fn.call(obj);
resFn()
//obj是一个对象产生不了作用域
// var age=100;
var obj={
age:20,
say:()=>{
alert(this.age)
}
}
obj.say();