Я пытаюсь реализовать использование именованного конструктора в ES6.Причина этого в том, что я подумал, что было бы приятнее избегать вызова конструктора с ключевым словом new
и вместо этого использовать простой метод класса для использования других методов.Я думал об использовании статической функции для этого как Proxy
для конструктора.
Я попробовал следующее:
class Person {
constructor(...props) {
let {name, age} = props;
this.name = name;
this.age = age;
}
static create(...props) {
return new Person(props);
}
display() {
console.log(this)
}
}
Person.create({name: 'John', age: 28}).display(); //Simple object input
Но это не сработает, поскольку простой ввод объекта дает:
Person {name: undefined, age: undefined}
Любая помощь приветствуется.
Обновление : Спасибо, ответ @appleapple очень помог.Я не заметил факт, что я передавал единственный аргумент.Для тех, кто интересуется, как это можно сделать для метода конструктора n-Ary (конечно, использование объекта очень удобно, но все же), вот пример:
class Person {
constructor([name, age ]) {
this.name = name;
this.age = age;
}
static create(...props) {
return new Person(props); //return new this(props); also works
}
display() {
console.log(this)
}
}
Person.create('John', 28).display();