Tôi có một số đối tượng được deserialized từ JSON mà tôi muốn gán một mẫu thử nghiệm mới để cung cấp các hàm getter và setter khác nhau. Cách rõ ràng để làm điều này (như đã đề cập trong this question) là để thiết lậpCách thích hợp để gán cho thuộc tính __proto__
myJsonObj.__proto__ = { function1: /* ... */, function2: /* ... */ };
Tuy nhiên, như MDC helpfully points out, các __proto__
tài sản là phi tiêu chuẩn và bị phản đối. Có cách nào phù hợp với tiêu chuẩn (đối với một số định nghĩa của "tiêu chuẩn") để đạt được cùng một hiệu ứng, mà không cần phải tạo ra nhiều đối tượng bao bọc mới?
Các tài liệu liên quan đến bạn cho thấy rằng bạn "Sử dụng Object.getPrototypeOf() thay vì" ([getPrototypeOf()] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf)). Vì vậy, một cái gì đó như thế này: 'var proto = myJsonObj.getPrototypeOf(); proto.function1 =/* mọi thứ * /; proto.function2 =/* bất cứ điều gì * /; ' – Lee
Lee, nếu tôi không nhầm, gọi' Object.getPrototypeOf (myJsonObj) 'sẽ cho tôi' Object.prototype' (vì 'myJsonObj' không có bất kỳ hàm tạo khác nào). Điều đó có nghĩa là bằng cách làm theo gợi ý của bạn, tôi sẽ sửa đổi 'Object' (rất xấu) thay vì tiêm một lớp vào' myJsonObj'. – kpozin