'use strict'
const user = {
	name: 'Bob',
	funcFunc() {
		return function () {
			console.log(this);
		}
	},
	funcArrow() {
		return () => {
			console.log(this);
		}
	},
	arrowFunc: () => {
		return function () {
			console.log(this);
		}
	},
	arrowArrow: () => {
		return () => {
			console.log(this);
		}
	},
};
 
const user2 = {
	name: 'Jim',
	funcFunc: user.funcFunc(),
	funcArrow: user.funcArrow(),
	arrowFunc: user.arrowFunc(),
	arrowArrow: user.arrowArrow()
}
 
user2.funcFunc(); // 
user2.funcArrow(); // 
user2.arrowFunc(); // 
user2.arrowArrow(); // 

Ответ

'use strict'
const user = {
	name: 'Bob',
	funcFunc() {
		return function () {
			console.log(this);
		}
	},
	funcArrow() {
		return () => {
			console.log(this);
		}
	},
	arrowFunc: () => {
		return function () {
			console.log(this);
		}
	},
	arrowArrow: () => {
		return () => {
			console.log(this);
		}
	},
};
 
user.funcFunc()(); // undefined
user.funcArrow()(); // user {}
user.arrowFunc()(); //  undefined
user.arrowArrow()(); // undefined
 
const user2 = {
	name: 'Jim',
	funcFunc: user.funcFunc(),
	funcArrow: user.funcArrow(),
	arrowFunc: user.arrowFunc(),
	arrowArrow: user.arrowArrow()
}
 
user2.funcFunc(); // user2{}
user2.funcArrow(); // user {}
user2.arrowFunc(); // user2 {}
user2.arrowArrow(); // window

Назад