Λείπει _this ορισμό

ψήφοι
1

Έχω μια συνάρτηση ορισμένη σε ένα αντικείμενο, όπως αυτό:

    connect(callback?: (connected: bool) => void) {
        $.ajax(this.url + /connect, $.extend(true, {}, this.ajaxSettings, {
            success: (data) => {
                this.errorChecker(data, (data) => {
                    if (callback != null) {
                        callback(data);
                    }
                });
            },
            timeout: this.timeout,
            error: () => {
                if (callback != null) {
                    callback(false);
                }
            }
        }));
    }

Ο compiler γραφομηχανή παίρνει αυτό και παράγει αυτό:

        VAS.prototype.connect = function (callback) {
            $.ajax(this.url + /connect, $.extend(true, {
            }, this.ajaxSettings, {
                success: function (data) {
                    _this.errorChecker(data, function (data) {
                        if(callback != null) {
                            callback(data);
                        }
                    });
                },
                timeout: this.timeout,
                error: function () {
                    if(callback != null) {
                        callback(false);
                    }
                }
            }));
        };

Σημειώστε αυτή τη γραμμή στα JS:

_this.errorChecker(data, function (data)

Ο compiler έχει παρατηρήσει σωστά μου χρήση του => χειριστή και κατέληξε στο συμπέρασμα ότι thisστην αρχική μου γραφομηχανή θα πρέπει να αναφέρεται το γονικό αντικείμενο και όχι ό, τι thisσυμβαίνει να είναι, όταν η επιστροφή κλήσης επιτυχία είναι στην πραγματικότητα ονομάζεται. Αλλά, για κάποιο λόγο ο compiler έχει ξεχάσει να συμπεριλάβει τη μαγεία γραμμή:

var _this = this;

Κατά την έναρξη της λειτουργίας. Είναι αυτό ένα bug; Ή είναι αυτό με το σχεδιασμό; Αν απλά αγνόησε τις _this / αυτό το πράγμα εντελώς, θα ήθελα απλώς να πω ότι κάνω λάθος, αλλά θα το μισό δρόμο εδώ που με κάνει να σκεφτώ κάτι δεν πάει καλά.

Ενημέρωση : παραδόξως αυτό φαίνεται να είναι ένα πρόβλημα με τον compiler σε Visual Studio, αν μπορώ να αντιγράψω τον ίδιο κωδικό στην παιδική χαρά λειτουργεί όπως αναμένεται.

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


1 απαντήσεις

ψήφοι
0

Αυτό μοιάζει με ένα bug. Θα πρέπει να ανοίξετε ένα στοιχείο εργασίας για την παρακολούθηση αυτή.

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

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