2011-09-06 12 views
5

JS Linting następujący fragment kodu:JSLint Oczekiwano 'set' i zamiast widział ''

/*jslint 
browser: true, 
es5: true, 
*/ 

var VCA = { 
    get enable() { 
     'use strict'; 
     return 0; 
    }, 
    set enable (value) { 
     'use strict'; 
     console.log(value); 
    } 
}; 

Wyniki w błąd:

Problem at line 11 character 9: Expected 'set' and instead saw ''. 

set enable (value) { 

ja nie rozumiem, co zrobić, aby ten patrz poprawnie: 'set' ?!

Wiem o składni __defineGetter__, ale naprawdę chcę użyć powyższego stylu.

Czy ktoś ma więcej informacji na temat tego błędu?

+2

Myślę, że to pytanie jest lepiej przystosowane do skrzynki e-mail Douglasa. –

+0

@ Tomalak - Nie wiedziałem, czy mój systax był błędny. Spisze to jako raport o błędzie. –

+0

To "czy"! Argh! –

Odpowiedz

4

To wydaje się być problemem w JSLint. Nie mogę uzyskać żadnego scenariusza get/set do sprawdzenia poprawności w JSLint. Twoja składnia wydaje się mieć rację, i zgodnie z Douglas 'initial post o walidacji setter getter.


edit: to sprawdza w porządku, więc może być obejście :-)

var myObject = {}; 

(function() { 
    var myProp = 'myDefault'; 
    Object.defineProperty(myObject, 'myProp', 
     { 
      enumerable:  false, 
      configurable: true, 
      get: function() { 
       return myProp; 
      }, 
      set: function (value) { 
       myProp = value + ' lala'; 
      } 
     }); 
}()); 
+0

Opera nie obsługuje Object.defineProperty IE nie obsługuje przykładowej składni Matta, więc musisz użyć obu, jeśli chcesz kompatybilność. – sethobrien

+0

Mweh, większość osób, które używają ES5 w trybie ścisłym, nie używa go w środowisku sieciowym. –

+0

Mam tylko "user strict", ponieważ JS Lint domyślnie jest ES5. –

Powiązane problemy