Hướng dẫn call constructor without new javascript - gọi hàm tạo mà không có javascript mới
Một giải pháp "Một dòng" hoạt động được tóm tắt cho ES6: Giải thíchCâu trả lời được đăng ở trên bởi Bergi về cơ bản là chính xác. Show
TLDR; Bỏ qua kết thúc 😎 cho giải pháp một lớp lót Câu trả lời của Bergi có vẻ không rõ ràng khi đọc nó. Vì vậy, đây là một mẫu mã mở rộng hơn để minh họa hai tính năng ES6 mới để đạt được các mục tiêu mong muốn. Cùng nhau, họ để một hàm duy nhất
Đầu tiên, chúng tôi sẽ sử dụng ES6 2 PSUEDO-VAR cung cấp cho chúng tôi 6 của biểu thức 7.
Thứ hai, chúng tôi sẽ sử dụng ES6 0. Điều này rất quan trọng để làm việc xung quanh các ràng buộc gọi của hàm tạo lớp ES6; Nếu chúng ta bị ràng buộc và quyết tâm không sử dụng 1.Kiểm tra những điều sau đây và tự mình xem đầu ra của nó (cũng được cung cấp trong #1-4 bên dưới).
Mà sau đó chúng ta có thể gọi nó theo những cách sau:
output => "c's new.target => không xác định" OUTPUT => "Trình xây dựng của A nhìn thấy 'mới' được gọi trên B với ARGS: ['Plain-C ()']" "
Trong đó #3 và #4 đạt được các mục tiêu mong muốn ban đầu.
Hoặc - nếu arg thứ 3 của 0 không được sử dụng cho init.strict mode rules for 1 requires using a closure
(smalltalk-block. Illustrated below:
Ngoài ra để phá vỡ các quy tắc chế độ nghiêm ngặt cho class B extends A {
// embedding within a class and generically referencing it requires =>
static C = (() => {
const $class = this; return function(...a) {
return Reflect.construct($class, a);}})();
// Read more on `Reflect.construct` 3rd argument to see more capabilities
// for why it does MORE than just `new $class(...a)` would do.
}
exports.C = B.C;
|