2012-06-03 40 views
9

Cảnh báo sau đây "Foo" trong tất cả các trình duyệt, ngay cả khi được rút gọn?Lấy tên của một lớp học coffeescript?

class Foo 

alert(Foo.name) 

Không có gì được nêu trong doc, tôi biết rằng IE có vấn đề với tên hàm, và tôi đang bối rối với những vấn đề nhiều mở về vấn đề này, như anyoftheseissues!

+0

Mã rút gọn WRT - nó thực sự phụ thuộc vào bộ khai thác và cấu hình bạn chuyển đến. Hầu hết có thể được cấu hình không chạm vào các câu lệnh chức năng được đặt tên (như '--no-mangle-functions' của UglifyJS), vì vậy thuộc tính' name' sẽ hoạt động tốt ở đó (trừ khi trình duyệt không hỗ trợ nó). Tất nhiên, với thuộc tính CoffeeScript định nghĩa thủ công kể từ 1.3.3, nó sẽ luôn hoạt động bất kể việc rút gọn (như được thêm vào như một thuộc tính văn bản thuần) – shesek

Trả lời

8

Đó có thể phụ thuộc bạn đang sử dụng phiên bản trình biên dịch CoffeeScript nào. Trong bản phát hành ổn định mới nhất (1.3.3), thuộc tính "tên" không được tạo theo mặc định.

class Foo 

biên dịch vào

var Foo; 
Foo = (function() { 
    function Foo() {} 
    return Foo; 
})(); 

Kể từ khi name tài sản là phi tiêu chuẩn và hiện không được hỗ trợ bởi các trình duyệt IE, bạn có thể không thực sự dựa vào nó qua trình duyệt. Thông tin chi tiết về vấn đề này có sẵn tại MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Name

+0

Bạn có gợi ý rằng phiên bản sau hoặc cũ hơn sẽ tạo ra một thuộc tính tên không? Ngoài ra, có một số cờ sẽ ghi đè lên mặc định này hoặc bạn có phải tự thêm thuộc tính hay không. –

+0

Tôi nghĩ rằng nó đã thực sự được gỡ bỏ, vì vậy trong các phiên bản cũ, bạn vẫn có thể tìm thấy hành vi này, vâng. – Niko

9

Từ bên trong bất kỳ phương pháp của lớp Foo được bao gồm trong Foo.prototype, bạn có thể chèn dòng

console.log @constructor.name 

và nó sẽ viết

Foo 

vào nhật ký bảng điều khiển của bạn. HTH.

+3

Hiện tại đã rõ ràng (xem kết thúc https://github.com/jashkenas/coffee-script/issues/2052) rằng nó không được hỗ trợ. Đi và yêu cầu nó nếu bạn muốn nó quá! –

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