Αυτό με τη γραφομηχανή arrow ορισμούς;

ψήφοι
2

Έγραψα τέτοιο αντικείμενο κυριολεκτική στη γραφομηχανή:

var object = {
    message: Say,
    say: () => {
        return this.message;
     }
};

Και πήρα όπως δημιουργείται JavaScript:

var object = {
    message: Say,
    say: function () {
        return _this.message;
    }
};

Σε περίπτωση που δεν υπάρχει τέτοια γραμμή πριν από την εκκαθαριστική δήλωση:

 var _that = this;

όπως είμαι χρησιμοποιώντας την έκφραση λειτουργία βέλος;

Δημοσιεύθηκε 10/10/2012 στις 00:00
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
2

=>Είναι ένα κομμάτι μιας κίνδυνος εδώ διότι, κριτικά, να συνδέεται thisμε την περικλείει το πεδίο εφαρμογής τουthis . Στη σωστή παραγωγή κώδικα, η var _this = this;γραμμή περνά πάνω από το αντικείμενο κυριολεκτική και σας sayλειτουργία απλά επιστρέφει undefined.

Το μόνο που ποτέ θέλετε να χρησιμοποιήσετε thisσε μια =>έκφραση, όταν θέλετε πραγματικά να αναφερθώ thisότι θα είναι παρόντες στο πεδίο εγκλεισμού. Στη συγκεκριμένη περίπτωση, δεν (θέλετε το εσωτερικό πεδίο this, δηλαδή το αντικείμενο κυριολεκτική ίδια).

Απαντήθηκε 10/10/2012 στις 00:25
πηγή χρήστη

ψήφοι
2

Είσαι σωστός. Είναι λείπει το:

var _this = this;

Αυτό ανακαλύφθηκε μετά την απελευθέρωση (0.8) και ορίζεται σήμερα από το υποκατάστημα του έργου.

Σημείωση: Επίσης, νομίζω ότι θα ήθελα να γράψω

var object = {
    message: "Say",
    say: function () {
        return () => this.message;
    }
};

η οποία θα εκτυπωθεί actualy Πείτε όταν είναι να τρέξει. Δείτε: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Απαντήθηκε 10/10/2012 στις 00:03
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more