Middle
```javascript const obj = { name: 'Alex', say() { console.info(this.name); } }; const fn = obj.say; fn(); obj.say(); ```
sobes.tech AI
AI-дан жауап
Бұл кодта келесілер орын алады:
const obj = {
name: 'Alex',
say() { console.info(this.name); }
};
const fn = obj.say;
fn(); // undefined
obj.say(); // 'Alex'
obj.say() шақырылғанда, әдістегі this контексті obj объектісіне сілтейді, сондықтан шығару 'Alex'.
Алайда, const fn = obj.say; деп жазғанда, say функциясы объектке байланысынан айрылады, және fn() шақырылғанда, this немесе undefined (қатаң режимде), немесе жаһандық объектке айналады (қатаң емес режимде). Нәтижесінде, this.name анықталмаған болып қалады, және шығару undefined.
Контексті сақтау үшін, bind қолдануға болады:
const fn = obj.say.bind(obj);
fn(); // 'Alex'