2016-03-24 17 views
0

bir sınıf içerisindeki get veya set adında bir yöntemi tanımlarken Garip bir sorun yaşıyorum şu şekilde Örneğin, ben sınıf Mem tanımlayan ediyorum.JavaScript SyntaxError: Beklenmedik Token '('

class Mem { 
    constructor() { 
     this.list=[] 
    } 

    get(index) { 
     return this.list[index]; 
    } 

    set(index, value) { 
     this.list[index] = value; 
    } 
} 

Ama Ben geta veya seta, sınıf tanımı çalışmalarına yöntem adını değiştirmek ve ben SyntaxError alamadım zaman, Ancak bir SyntaxError: Unexpected token '('

olsun.

class Mem { 
    constructor() { 
     this.list=[] 
    } 

    geta(index) { 
     return this.list[index]; 
    } 

    seta(index, value) { 
     this.list[index] = value; 
    } 
} 

get ve set'un Javascript'te kısıtlanmış anahtar kelimeler olmadığını kontrol ettim, bu yüzden yanlış yaptığım şey konusunda kafam karıştı.

+1

Çalıştığınız ortamla ilgili bir hata gibi görünüyor. Kodunuzu Chrome'da kopyalayıp yapıştırmanız iyi çalışıyor. –

+0

Sadece kontrol edildi ve Chrome'da çalışıyor. Görünüşe göre bu hata sadece Safari'de ortaya çıkıyor. – dqiu

+2

Hala tamamen desteklemeyen tarayıcılarda ES6 teknolojilerini ('class') kullanarak acele ediyorsunuz. Lütfen her zaman uyumluluk tablosuna bakın. –

cevap

0

getter and setter syntax ile çarpışıyorsunuz.

{get prop() { ... } } 
{get [expression]() { ... } } 
+0

Doğru değil. Bu tamamen farklı bir sözdizimi. Bunu konsolunuzda çalıştırmayı deneyin (Chrome'u çalıştırıyorum). 'var obj = {get() {dönüş 'hey'; }}; obj.get() '' get' veya 'set' adlı bir işlevi bildirmek tamamen geçerli. –

+1

@MikeC Belirli bir tarayıcı ES6 uyumluluk hatası olduğunu kabul etmeliyim. –

+0

Nina bu konuda haklı! ES6 ve typescript sözdizimi. –

İlgili konular