Вчера у меня было интервью, и была задача написать класс JavaScript, который может быть создан с использованием нескольких новых и созданных объектов, которые должны быть экземплярами всех его родителей.Я пытался сделать это с помощью Function.bind (), но это не сработало.
function JSObject() {
return JSObject.bind(null);
}
var obj1 = new JSObject();
var obj2 = new obj1();
var obj3 = new obj2();
console.log(obj2 instanceof obj1); // prints false, expected true
console.log(obj3 instanceof obj2); // prints false, expected true
console.log(obj3 instanceof obj1); // prints false, expected true
console.log(obj1 instanceof obj2); // prints false, expected false
console.log(obj1 instanceof obj3); // prints false, expected false
let objects = [JSObject, new JSObject()];
for (let i = 0; i < 10; i++) {
objects.push(new objects[objects.length - 1]());
}
for (let obj of objects) {
const objProt = Object.getPrototypeOf(obj);
const objProtProt = Object.getPrototypeOf(obj.prototype);
const funcProt = Object.getPrototypeOf(Function);
const funcProtProt = Object.getPrototypeOf(Function.prototype);
console.log(objProt === funcProt); // expected true
console.log(objProtProt === funcProtProt); // expected true
}
Кроме того, я не могу изменить прототип напрямую, тесты проверяют, что прототипом объекта должна быть функция