рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ
рдХреНрд░рд┐рд╕реНрдЯреА рд╕рд╛рд▓рд┐рд╕реНрдХреБ рджреНрд╡рд╛рд░рд╛
"рдпрд╣" рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддрд╛ рд╣реИ "" рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ , рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛
рд╣реВрдВ ред
рдЗрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рдЦреЛрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рддрд╛ рд╣реИ ред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди, рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ред рдЗрд╕ рдЫрджреНрдо
рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рджреЗрдЦреЗрдВред
рдиреЗрд╕реНрдЯреЗрдб рдХрд╛рд░реНрдп
рдпрд╣ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддрд╛ рд╣реИред
class Service { constructor(){ this.numbers = [1,2,3]; this.token = "token"; } doSomething(){ setTimeout(function doAnotherThing(){ this.numbers.forEach(function log(number){
DoSomething () рд╡рд┐рдзрд┐
рдХреЗ рджреЛ рдиреЗрд╕реНрдЯреЗрдб рдХрд╛рд░реНрдп рд╣реИрдВ:
doAnotherthing () рдФрд░
log () ред рдЬрдм
service.doSomething () рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
рдпрд╣ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддрд╛ рд╣реИред
рдмрд╛рдБрдз ()
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛
рдмрд╛рдЗрдВрдб () рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
doSomething(){ setTimeout(function doAnotherThing(){ this.numbers.forEach(function log(number){ console.log(number); console.log(this.token); }.bind(this)); }.bind(this), 100); }
рдмрд╛рдЗрдВрдб () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЬрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИред
function doAnotherThing () {/*..*/ Ideal.bind(this) doAnotherThing () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ
doSomething () рд╕реЗ
рдЗрд╕рдХрд╛ рдорд╛рди рд▓реЗрддрд╛ рд╣реИред
рд╡рд╣ / рд╕реНрд╡
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ
рдХрд┐ рдирдП рдФрд░
рдЙрд╕ рд╕реНрд╡рдпрдВ рдЪрд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреЛ
рдЗрд╕ рдореВрд▓реНрдп рдХреЛ
doSomething () рд╡рд┐рдзрд┐ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред
doSomething(){ let that = this; setTimeout(function doAnotherThing(){ that.numbers.forEach(function log(number){ console.log(number); console.log(that.token); }); }, 100); }
рд╣рдореЗрдВ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдХрд┐ = рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдореЗрдВред
рддреАрд░ рдХрд╛рд░реНрдп
рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рджреЗрддрд╛ рд╣реИред
doSomething(){ setTimeout(() => { this.numbers.forEach(number => { console.log(number); console.log(this.token); }); }, 100); }
рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ
рдЗрд╕ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ
рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдиреАрдЪреЗ рдПрдХ рдЪрд░ рдирд╛рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡реНрдпрдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдХреЛрдб рд╣реИ:
doSomething(){ let log = number => { console.log(number); console.log(this.token); } let doAnotherThing = () => { this.numbers.forEach(log); } setTimeout(doAnotherThing, 100); }
рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐)
рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп
рдпрд╣ рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рдирд┐рдореНрди рд╡рд░реНрдЧ рдХреЛ рджреЗрдЦреЗрдВ:
class Service { constructor(){ this.token = "token"; } doSomething(){ console.log(this.token);
рдЖрдЗрдП рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рдирдореЗрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ
service.doSomething () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ,
рдпрд╣ рд╕рдВрджрд░реНрдн рд▓рд┐рдВрдХ рдЦреЛ рджреЗрддрд╛ рд╣реИред
рдмрд╛рдБрдз ()
рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдмрд╛рдЗрдВрдб () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдХреЛрдб рд╣реИ:
рддреАрд░ рдХрд╛ рдХрд╛рд░реНрдп
рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдПрдХ рдПрд░реЛ рдлрдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рдЬреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
service.doSomething () ред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ
рдШрдЯрдХреЛрдВ рдореЗрдВ,
рдпрд╣ рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддрд╛ рд╣реИ рдЬрдм рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
class TodoAddForm extends React.Component { constructor(){ super(); this.todos = []; } componentWillMount() { this.setState({desc: ""}); } add(){ let todo = {desc: this.state.desc};
рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдирдП рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ
рдмрд╛рдЗрдВрдб (рдЗрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
constructor(){ super(); this.todos = []; this.handleChange = this.handleChange.bind(this); this.add = this.add.bind(this); }
"рдпрд╣" рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ
рдпрд╣ рдирд╣реАрдВ - рд╕рдВрджрд░реНрдн рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдлреИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
function Service() { let numbers = [1,2,3]; let token = "token"; function doSomething(){ setTimeout(function doAnotherThing(){ numbers.forEach(function log(number){ console.log(number); console.log(token); }); }, 100); } return Object.freeze({ doSomething }); }
рдпрджрд┐ рдЖрдк рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдВрджрд░реНрдн рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред
let service = Service(); service.doSomething();
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддрд╛ рд╣реИред
рдмрд╛рдЗрдВрдб () ,
рдХрд┐ / рд╕реЗрд▓реНрдл рд╡реЗрд░рд┐рдПрдмрд▓ рдФрд░ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрджрд░реНрдн рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред
рдлреИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕
рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреЗ рд╣реИрдВред