Praleisti ir pereiti prie pagrindinio turinio

ES6: this in arrow function

Kas tas this (kontekstas)?

function sayHi(){
 console.log(this);
}

console.log(this);




Rezultatas:
"Globalus" this - visas kontekstas. Išskleidus jį galima rasti sayHi funkciją:


Pasiekti galime:
console.log(this.sayHi);


Su this atsiranda problema naudojant setTimeout:

 let salis = {
//add property 
miestai: ['Vilnius', 'Kaunas', 'Klaipėda'],
//add method
printWithDash: function(){
console.log('inside printWithDash', this);
setTimeout(function(){
console.log('inside setTimeout', this);
console.log(this.miestai.join(" - "));
}, 3000)
}
}

console.log(salis.miestai);
console.log(salis.printWithDash());

Rezultatas:

problema tame, kad funkcijoje setTimeout kontekstas yra globalus. ES6 geroji praktika siūlo naudoti arrow funkciją:

let salis = {
 //add property 
 miestai: ['Vilnius', 'Kaunas', 'Klaipėda'],
 //add method
 printWithDash: function(){
  console.log('inside printWithDash', this);
  setTimeout(() => {
   console.log('inside setTimeout', this);
   console.log(this.miestai.join(" - "))
  }, 3000)
 }
}

salis.printWithDash();


Rezultatas:


Arrow funcijos kontekstas (lieka jį iškvietusios funkcijos) toks pat kaip ir printWithDash.












Komentarai

Populiarūs šio tinklaraščio įrašai

VS Code: Simple react snippets

Simple React Snippets Snippets Snippet Renders imr Import React imrc Import React / Component impt Import PropTypes impc Import React / PureComponent cc Class Component ccc Class Component With Constructor sfc Stateless Function Component cdm componentDidMount cwm componentWillMount cwrp componentWillReceiveProps gds getDerivedStateFromProps scu shouldComponentUpdate cwu componentWillUpdate cdu componentDidUpdate cwu componentWillUpdate cdc componentDidCatch gsbu getSnapshotBeforeUpdate ss setState ssf Functional setState ren render rprop Render Prop hoc Higher Order Component Full Expansions imr - Import React import React from 'react'; imrc - Import React, Component import React, { Component } from 'react'; impt - Import PropTypes import PropTypes from 'prop-types'; impc - Import PureComponent import React, { PureComponent } from 'react'; cc - Class Component class | extends Component { state = { | }, ...

Į dešimtainį

toFixed(2) - verčia skaičių į dešimtainį, skliaustuose nurodyta kiek bus skaičių po kablelio. var bePvm= 10.251 + 13.991 + 57.151; var Pvm= bePvm* 0.21; var viso= bePvm + Pvm; console.log(viso.toFixed(2));