Что будет классифицировать mongoose.Query.prototype.exec;как?тип значения или ссылочный тип?Потому что если это ссылочный тип, то при изменении mongoose.Query.prototype.exec = function
exec
относится к ссылочному типу, но ему присваивается значение другой ссылочной переменной mongoose.Query.prototype.exec
,Вы можете думать об этом так: mongoose.Query.prototype.exec
сам указывает на объект (объект Function) в памяти, и теперь после присваивания exec
также указывает на тот же объект - другими словами, адрес памятиобъект копируется (по значению) из mongoose.Query.prototype.exec
в exec
во время присваивания.Таким образом, значение самой переменной mongoose.Query.prototype.exec
, то есть адреса памяти, хранящегося в ней, можно изменить, не затрагивая другую переменную exec
.Они оба просто в конечном итоге будут указывать на два разных объекта.
Может ли кто-нибудь объяснить это в растянутом виде, то есть в точках применения к где?
В этом случае это 'будет объектом, для которого будет вызываться эта функция, т.е. экземпляром Query
.
и он передает аргумент (this, аргумент);откуда взялся этот аргумент?
Если не указан какой-то код, который вы пропустили для копирования вставки в вопросе, argument
представляется опечаткой.Вероятно, он имел в виду встроенный объект arguments
, который доступен внутри каждой функции и состоит из аргументов, переданных функции.Вот ссылка .
На высоком уровне инструктор пытается переопределить встроенное поведение функции Query.exec()
, добавив некоторые свои собственные настройки.обработка.Сначала он создает «резервную копию» исходной функции, затем указывает Query.exec на свою пользовательскую функцию, которая добавляет пользовательскую обработку (оператор log), а затем передает управление резервной копии, т. Е. Выполняет встроенное поведение.Кто бы ни вызвал exec () для экземпляра Query после этой точки, он увидит переопределенную функциональность - сначала оператор log, затем встроенное поведение exec()