2011-09-06 32 views
5

JS Linting bit mã sau đây:JSLint Dự kiến ​​'đặt' và thay vào đó thấy ''

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

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

Kết quả trong các lỗi:

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

set enable (value) { 

Tôi không hiểu phải làm gì để làm cho điều này xem 'set' chính xác ?!

Tôi biết về cú pháp __defineGetter__ nhưng thực sự muốn sử dụng kiểu trên.

Có ai có thêm thông tin về lỗi này không?

+2

Tôi nghĩ rằng câu hỏi này là phù hợp hơn cho hộp thư email của Douglas. –

+0

@Tomalak - Tôi không biết liệu tâm thu của tôi có sai không. Sẽ gửi nó dưới dạng báo cáo lỗi. –

+0

Đó là "cho dù"! Argh! –

Trả lời

4

Dường như có vấn đề trong JSLint. Tôi không thể nhận được bất kỳ kịch bản get/set nào để xác thực trong JSLint. Cú pháp của bạn có vẻ đúng, và phù hợp với Douglas 'initial post về xác nhận getter setter.


chỉnh sửa: đây xác nhận tốt, vì vậy có thể là một workaround :-)

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 không hỗ trợ Object.defineProperty và IE không hỗ trợ cú pháp mẫu của Matt, vì vậy bạn phải sử dụng cả hai nếu bạn muốn tương thích. – sethobrien

+0

Mweh, hầu hết những người đang sử dụng ES5 ở chế độ nghiêm ngặt không sử dụng nó trong môi trường web. –

+0

Tôi chỉ có "người dùng nghiêm ngặt" vì JS Lint mặc định là ES5. –

Các vấn đề liên quan