Комментарии 10
Не совсем понятна идея зачем он был нужен
Вызов статических методов инстанса
class Test {
constructor(a) {
this.a = a;
}
static log(str) {
console.log(str);
}
logA() {
this.constructor.log(this.a);
}
}
(object => {
object.logA();
object.constructor.log('456');
})(new Test('123'));
это имеет больше смысла чем клонирование объекта
спасибо, хорошо хоть одним вопросом меньше)
спасибо, хорошо хоть одним вопросом меньше)
Вот тут чуть больше:
https://m.habr.com/ru/post/353778/
Не только.
Object.create появился только в es6.
А до него было необходимо ручками работать.
В последнюю строку custom_new вкралась ошибка! Если constructor вернёт примитивное значение (не объект), результатом custom_new должен быть self. Кстати, оный self лучше через Object.create, строкой меньше.
constructor – это ссылка на функцию, с помощью которой был создан объект:
Конструктор не всегда указывает ну функцию, с помощью которой он был создан
function Foo() {
}
function Bar() {
}
Bar.prototype = Foo.prototype;
var foo = new Foo();
var bar = new Bar()
console.log(bar.constructor); // Foo
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Прототипы в JS и малоизвестные факты