Tôi có một đối tượng như thế:Đi qua một Javascript Object Web Worker
function A(id) {
this.id = id;
}
A.prototype.getId = function() {
return this.id;
}
Nó được bao gồm trong một html-page như một tập tin ("objects.js") cũng như trong lao động web với importScript ("objects.js"). Bây giờ tôi tạo một thể hiện của A trong trang html với "var a = new A()" và đăng nó với "postMessage()" vào một Web Worker.
Điều thú vị là trong nhân viên nó vẫn có thuộc tính "id" với giá trị của nó nhưng hàm nguyên mẫu bị mất. Tôi đoán lý do có thể là các hàm nguyên mẫu được "ràng buộc" với ngữ cảnh trang html chứ không phải ngữ cảnh của nhân viên web.
Vì vậy, những gì tôi đang làm ở người lao động là:
event.data.a.__proto__ = A.prototype;
Đó là làm việc và tôi thấy nó như một số loại dàn diễn viên ...
Bây giờ câu hỏi của tôi là nếu đó là chỉ và một cách hợp lệ hoặc nếu có một cách tốt hơn để đăng một đối tượng với các hàm nguyên mẫu cho một nhân viên web. Định nghĩa đối tượng có sẵn trong cả hai ngữ cảnh ...
Tôi khá chắc chắn rằng nó cũng có thể vượt qua một đối tượng miễn là nó không có chức năng trong đó. Ít nhất nó đang làm việc cho tôi trong tất cả các trình duyệt chính ... – user2160787
@ user2160787 Có, nhưng chỉ vì Javascript sẽ tự động tuần tự hóa và deserialize các đối tượng đơn giản (chẳng hạn như mảng). – fredrik
ok cảm ơn, vì vậy tôi đoán tôi chỉ từ chối các chức năng nguyên mẫu :) – user2160787