2015-11-21 14 views
7

Nó có vẻ như nó có thể lấy mã của một hàm trong JavaScript, và nó cũng đơn giản như:QML - nhận được mã của một hàm JS như là một chuỗi

function foo() {...} 
foo.toString() 

Tuy nhiên, làm điều đó trong QML mang lại cho tôi một cách khá cởi mở function() { [code] }

Vì vậy, có cách nào để có được phần [code] không? Tôi cũng đã cố gắng JSON.stringify() nhưng nó đã không làm bất kỳ tốt.

+0

Nếu đó là chức năng được tích hợp sẵn, việc hiển thị mã sẽ không hữu ích vì nó có khả năng được viết bằng C++. –

+0

Tôi nhận được '[code]' cho mọi hàm bất kể chúng được xây dựng trong, từ C++ hoặc các hàm JS người dùng tùy chỉnh. – dtech

+0

Đây không phải là câu trả lời cho câu hỏi của bạn, nhưng tôi muốn gửi một cảnh báo ở đây. Chức năng là phương tiện trừu tượng cơ bản trong javascript. Tôi có thể thấy nó sẽ hữu ích cho các mục đích thử nghiệm và công cụ để có thể kiểm tra mã của các hàm trong thời gian chạy, nhưng điều đó sẽ phá vỡ rào cản trừu tượng và có thể dẫn đến mã kết hợp chặt chẽ sẽ khó duy trì. –

Trả lời

0

http://doc.qt.io/qt-5/qtqml-javascript-functionlist.html#function-objects

Function Properties 
    toString() 
    apply(thisArg, argArray) 
    call(thisArg [, arg1 [, arg2, ...]]) 
    bind((thisArg [, arg1 [, arg2, …]]) 

Đối với JS-Chức năng, QT không hỗ trợ tùy chọn khác để có được những chuỗi của một hàm. Nhưng nếu bạn giải thích lý do tại sao bạn muốn nó, chúng tôi có thể tìm thấy một giải pháp khác.

+0

Ví dụ của bạn thậm chí không phải về QML. – dtech

+0

Có, xin lỗi. Tôi đã thực hiện một câu trả lời mới – CoderPi

+0

Ok, tôi đã thêm phần quan trọng – CoderPi

1

Tôi muốn tóm tắt cuộc thảo luận diễn ra trong các nhận xét, vì đây có thể là phản hồi tốt cho các tìm kiếm trong tương lai.

Như đã nêu trong các nhận xét, có vẻ như đây là lỗi đáng chú ý của QML. Here họ tuyên bố rằng:

thời gian chạy QML thực hiện các ECMAScript Ngôn ngữ Đặc điểm kỹ thuật tiêu chuẩn

Dù sao, nó thực sự không.

Nhờ Meetfe, here là liên kết tới lỗi mở về vấn đề này.

Các lỗi tương tự có vẻ là here, nơi họ đề nghị để xem xét các tài liệu tham khảo để biết thêm chi tiết:

Đối với một mô tả chi tiết, vui lòng xem đặc điểm kỹ thuật ECMA-262.

Đó là (ít nhất, có vẻ với tôi) một yêu cầu về khả năng tương thích đầy đủ và một lần nữa nó khiến tôi nghĩ đến lỗi, thay vì thực hiện một phần đặc điểm kỹ thuật. Vì vậy, thật không may, đó là cách dự định để xâu chuỗi một hàm (nó có ý nghĩa thực sự, vì nó là một môi trường tuân thủ ECMascript), nhưng nó không hoạt động chính xác trong QML, mặc dù nó phải như được nêu trong tài liệu .

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