Tôi đã sử dụng các chức năng sau đây để tạo ra các trường hợp của các lớp học chưa được biết đối với một số thời gian:constr.apply (this, args) trong các lớp ES6
Kernel.prototype._construct = function (constr, args) {
function F() {
constr.apply(this, args); // EXCEPTION!
}
F.prototype = constr.prototype;
return new F();
};
Nếu tôi sử dụng nguyên mẫu mọi thứ hoạt động:
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
var person = Kernel._construct(Person, ["name", "surname"]); // WORKS!
Tuy nhiên, một số người đang sử dụng thư viện của tôi bằng cách sử dụng các lớp gốc ES6 trong nút v4 +:
class Person {
constructor(name, surname) {
this.name = name;
this.surname = surname;
}
}
var person = Kernel._construct(Person, ["name", surname]); // EXCEPTION!
Họ đang gặp lỗi:
TypeError: Class constructors cannot be invoked without 'new'
Tôi cần có khả năng gọi hàm tạo với số lượng đối số không xác định. Bất kỳ ý tưởng về cách để có được xung quanh vấn đề này?
Mục đích của '_bind' trong mã của bạn là gì? – Amit
Tôi đã gỡ bỏ, nó đã có bởi vì tôi đã thử nghiệm bằng cách sử dụng _bind ... –