Strano modo di scrivere javascript

di il
2 risposte

Strano modo di scrivere javascript

Ho iniziato a studiare nodeJs e mi sono trovato davanti a esempi di codice come questi e non capisco cosa fanno, mi dareste una mano per favore, non sono neanche sicuro sia Javascript o se è un dialetto strano:

1) la freccia che significa? E come fa a funzionare questo codice?

var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) =>
a + b + c;
f();


2) anche qui non capisco la sintassi


class MyArray1 extends Array {
}
let result1 = new MyArray1().map(x => x);
console.log(result1 instanceof MyArray1);

class MyArray2 extends Array {
    static get [Symbol.species]() {
        return Array;
    }
}
let result2 = new MyArray2().map(x => x);
console.log(result2 instanceof MyArray2);


3) ma gli oggetti non si definiscono con le funzioni? Qui sembra diverso


class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    toString() {
        return '(' + this.x + ', ' + this.y + ')';
    }
    sum(..form) {
        let {a, b} = form;
        return '(' + a+b +')';
    }
    static staticMethod() {
        return 'classy';
    }
}

class ColorPoint extends Point {
    constructor(x, y, color) {
        super(x, y);
        this.color = color;
    }
    toString() {
        return super.toString() + ' in ' + this.color;
    }
}

let cp = new ColorPoint(25, 8, 'green');
cp.toString();

console.log(cp instanceof ColorPoint);
console.log(cp instanceof Point);

4) è questo? Cosa sono i tre puntini?

class IterableArguments {
    constructor(...args) {
        this.args = args;
    }
    * [Symbol.iterator]() {
        for (let arg of this.args) {
            yield arg;
        }
    }
}

for (let x of new IterableArguments('hello', 'world')) {
    console.log(x);
}

5) ma set e get sono parole chiave?

var obj = {
        get prop() {
            return "Getter";
        },
        set prop(value) {
            console.log("Setter: "+value);
        }
    }

    > obj.prop
    'Getter'
    > obj.prop = 123;
    Setter: 123

6) anche questo non lo capisco

Js.log("this is reason");
let x = [%bs.raw {| 'here is a string from javascript' |}];
Js.log(x ++ " back in reason land");



Aiutatemi per favore non ci capisco niente, ma Node che razza di javascript usa?

2 Risposte

  • Re: Strano modo di scrivere javascript

    LukeStat ha scritto:


    non sono neanche sicuro sia Javascript o se è un dialetto strano:
    E' sì Javascript ... ma sono tutte ( => , class, ...args , ecc...) nuove feature di EcmaScript 6 (http://es6-features.or)
  • Re: Strano modo di scrivere javascript

    Ciao LukeStat, si quello è tutto codice Javascript nativo. Tranne l'ultimo esempio di codice che invece si riferisce a una libreria molto famosa che si chiama ReasonML. Da diverso tempo javascript ha un nuovo modo di scrivere le classi con Class, che si presta meglio a fare ereditarieta, se conosci typescript, il javascript con i tipi, li si usa tanto ed è ereditata da javascript standard. I tre puntini e la freccia sono legati a due cose dette curryficazione e deconstruction, si usa per molti scopi, ad esempio creare funzioni ad argomenti variabili e va molto d'accordo con una sintassi JSON-compatibile di assegnamento multiplo come questa var {item1, item2} = elements. La freccia in particolare la puoi vedere come un nuovo modo di definire funzioni di javascript standard da qualche anno. Ci puoi fare una cosa come let a = x => y => { return x+y}. Oppure const f = (x) => {  return x*2 }. Let invece definisce un nuovo ambito di visibilità per la variabile senza ricorrere a una sotto funzione. Spero di essere stato utile.
Devi accedere o registrarti per scrivere nel forum
2 risposte