_this tanımını Eksik

oy
1

Böyle bir nesne tanımlı bir işlevi vardır:

    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);
                }
            }
        }));
    }

Typescript derleyici o alır ve bu üretir:

        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 bu çizgiyi Not:

_this.errorChecker(data, function (data)

Derleyici => operatörü benim kullanımını fark etti ve sonucuna doğru olan thisbenim orijinal typescript üst nesnenin bakın ve olmamalıdır ne olursa olsun thisbaşarı geri arama aslında çağrıldığında olur. Ama nedense derleyici sihirli çizgiyi içerecek şekilde unuttu:

var _this = this;

fonksiyonun başında. Bu bir hata mı? Ya da bu tasarım gereğidir? Sadece / bu şey tamamen _this göz ardı ederse, ben yanlış yapıyorum demek sadece istiyorum, ama yarı yolda beni buraya şeylerin yanlış olduğunu düşünüyorum yapar gidiyor.

Güncelleme : garip bir şekilde bu İçine aynı kodu kopyalayıp, Visual Studio derleyici ile bir sorun gibi görünüyor oyun alanı beklendiği gibi çalışır.

Oluştur 08/10/2012 saat 18:33
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Bu bir hata gibi görünüyor. Bir açmalı çalışma öğesi bu izlemek için.

Cevap 08/10/2012 saat 18:51
kaynak kullanıcı

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