Какой принцип работы функции? И так имеется функция, которая принимает один, и второй необязательный аргумент, первый Класс-конструктор, второй его аргументы, и по сути он возвращает его объект, есть вопрос, new (Class.bind.apply( Class, arguments )), каким образом он получает его прототип, прошу помочь детально)function construct(Class/*,arg*/) { return new (Class.bind.apply( Class, arguments ))()// ??? } function Class(name){ this.name = name; } Class.prototype.sayHello = function(){
Принцип работы функции construct в данном случае следующий:
Функция construct принимает первый аргумент Class, который является конструктором класса, и второй необязательный аргумент arg.
С помощью Class.bind.apply( Class, arguments ) создается новая функция, которая связывает конструктор Class с переданными аргументами.
Затем с помощью оператора new создается новый объект, используя созданную функцию и ее аргументы.
В результате в переменную obj записывается новый объект, созданный с помощью конструктора Class и переданных аргументов.
Что касается получения прототипа объекта, то он наследуется автоматически при создании объекта с помощью конструктора. Прототип объекта будет равен прототипу конструктора Class. Таким образом, объект obj будет иметь доступ ко всем методам и свойствам, определенным в прототипе Class, включая метод sayHello.
В результате при вызове obj.sayHello() будет возвращаться строка "Hello Steve", так как объект obj был создан с помощью конструктора Class, который имеет метод sayHello, который возвращает "Hello" и имя объекта.
Принцип работы функции construct в данном случае следующий:
Функция construct принимает первый аргумент Class, который является конструктором класса, и второй необязательный аргумент arg.
С помощью Class.bind.apply( Class, arguments ) создается новая функция, которая связывает конструктор Class с переданными аргументами.
Затем с помощью оператора new создается новый объект, используя созданную функцию и ее аргументы.
В результате в переменную obj записывается новый объект, созданный с помощью конструктора Class и переданных аргументов.
Что касается получения прототипа объекта, то он наследуется автоматически при создании объекта с помощью конструктора. Прототип объекта будет равен прототипу конструктора Class. Таким образом, объект obj будет иметь доступ ко всем методам и свойствам, определенным в прототипе Class, включая метод sayHello.
В результате при вызове obj.sayHello() будет возвращаться строка "Hello Steve", так как объект obj был создан с помощью конструктора Class, который имеет метод sayHello, который возвращает "Hello" и имя объекта.