2016-04-19 16 views
8

Bir sınıfı işlev olarak çağırmamın bir yolu var mı? Aşağıdaki işlevselliklere sahip olmak istiyorum, sınıfta bir main yöntemi var ve yöntemin yürütmesini istediğim bu.Bir sınıf işlev olarak görülemiyor

class test { 
    constructor() { 
    return this.main 
    } 
    main() { 
    return Promise.resolve('thomas') 
    } 
} 

test().then(name => { 
    console.log(name) 
}) 

Benim diğer tek seçenek böyle bir sarmalayıcı fonksiyonu var olacaktır görünüyor.

class Test { 
    constructor (name) { 
    this.name = name 
    } 
    main() { 
    return Promise.resolve(this.name) 
    } 
} 

let test = (name) => { 
    return new Test(name).main() 
} 

test('thomas').then(name => { 
    console.log(name) 
}) 
+7

JS sınıflarını kullanırken 'new' anahtar sözcüğünü kullanmanız gerekir. Sağladığınız ikinci seçeneğin doğru olacağını kabul ediyorum. (veya sınıfları kullanmayın) – evolutionxbox

+2

Bir sınıf bir nesne oluşturur. Yapıcınız, sınıfın bir örneğini değil, başka bir işlevi döndürür. Bu pek anlamlı değil. Tam olarak burada ne yapmaya çalışıyorsun? Belki de sınıfta statik bir yöntem aradığınız şeydir? –

+0

@FelixKling Çok sayıda iç işleyişe sahip karmaşık bir işlev oluşturmak istiyorum ve bir ton küçük işlevler oluşturmak yerine 'this.methodName 'öğesini kullanarak kendisine referanslar çağırıyor. Ben sadece bir 'ana' fonksiyonunu kullanmak istiyorum. Bunun bir sınıfın en iyi şekilde kullanılmadığını anlıyorum, ama benim gibi kekimi alabilirim ve yiyebilirim. – ThomasReggi

cevap

6

JavaScript'te sınıfları kullanırken new anahtar sözcüğünü kullanın. Sınıf adından önce new ekleyene kadar benzer bir sorun yaşadım.

İlgili konular