Có thể tạo một số mã enum
trong mã C++ của addon Node.js và sau đó đưa loại này vào mã js không? Tôi thấy rằng các loại enum bản địa tồn tại trong js, nhưng không có thông tin về việc thực hiện của chúng trong động cơ v8.Các kiểu liệt kê trong addon gốc của Node.js
5
A
Trả lời
3
Không có loại enum cụ thể trong javascript, thay vì sử dụng int không đổi cho điều đó, chẳng hạn như trong web, thuộc tính UNSENT,OPENED, HEADERS_RECEIVED,LOADING,DONE
của XMLHttpRequest
được định nghĩa là loại enum trong C++. Để xuất những tài sản trong v8 cho javascript, sử dụng như:
Local<Object> obj;
const char* k = "HEADERS_RECEIVED";
int v = 1;
obj->Set(v8::String::NewSymbol(k), v8::Int32::New(v), ReadOnly); // Use PropertyAttribute ReadOnly so that value won't be changed by javascript.
4
Lưu ý rằng trong ví dụ do Kevin bạn cần phải tạo một thể hiện của Local<Object>
trước khi sử dụng nó để chắc chắn rằng bạn gọi Object::New()
.
Local<Object> obj = Object::New();
const char* k = "HEADERS_RECEIVED";
int v = 1;
obj->Set(v8::String::NewSymbol(k), v8::Int32::New(v), ReadOnly); // Use PropertyAttribute ReadOnly so that value won't be changed by javascript.
1
này đã thay đổi bây giờ theo mới nhất v8 API ref
Isolate* isolate = args.GetIsolate();
Local<Context> context = isolate->GetCurrentContext();
Local<Object> obj;
obj->DefineOwnProperty(
context,
String::NewFromUtf8(isolate,"enum"),
Number::New(isolate,1), v8::ReadOnly
);
Các vấn đề liên quan
- 1. Mở rộng các kiểu liệt kê trong F #
- 2. Liệu Perl có một kiểu liệt kê?
- 3. Chuyển đổi ngầm định từ kiểu liệt kê 'UIBarButtonSystemItem' thành kiểu liệt kê khác 'UIBarButtonItemStyle' - iPad - iOS5
- 4. Mã hóa không phải là một kiểu liệt kê?
- 5. Trong Windbg, làm thế nào tôi có thể liệt kê các giá trị của một kiểu liệt kê trong khi gỡ lỗi?
- 6. Chỉ liệt kê các SubFolders trong C#?
- 7. Liệt kê các nút DOM trong TChromium
- 8. liệt kê các hội đồng trong GAC
- 9. Liệt kê các ổ đĩa ngoài
- 10. Làm thế nào để liệt kê tất cả các cơ sở dữ liệu MongoDB trong Node.js?
- 11. Liệt kê các phím trong từ điển?
- 12. Cách liệt kê các tab trong vim?
- 13. liệt kê các phân vùng trong nútjs
- 14. Sử dụng một kiểu liệt kê làm tham số mẫu
- 15. Liệt kê với kiểu trả về không phải là chuỗi?
- 16. Thừa kế liệt kê trong Java?
- 17. Tham chiếu các thuộc tính kiểu được liệt kê từ XML trong Android
- 18. Nhận giá trị đại diện của một kiểu liệt kê trong Ada
- 19. Ẩn các loại được liệt kê trong Assembly.GetTypes in .net
- 20. Cách liệt kê các tệp trong thư mục tĩnh?
- 21. Liệt kê các phương thức của một lớp trough mixin
- 22. Liệt kê các giá trị có thể đặt trong Delphi
- 23. Liệt kê tất cả các gói con của gói
- 24. liệt kê nhanh về NSArray của các loại khác nhau
- 25. Mercurial - liệt kê đầu của người dùng
- 26. Psql liệt kê tất cả các bảng
- 27. Các loại được liệt kê trong SQL Server 2008?
- 28. Cách liệt kê tất cả các thuộc tính của lớp
- 29. Liệt kê các thành viên của nhóm facebook qua API
- 30. liệt kê các trường của đối tượng khéo léo
Dường như không có cách nào cho enums hợp pháp cho addon Node.js. Trong nhóm Node.js của Google, tôi nhận được câu trả lời sau cho câu hỏi: "Không có gì bạn có thể làm về điều đó. Xuất chúng [tham số] dưới dạng số nguyên và kiểm tra các đầu vào trong vùng C++". – Ivan