Первое, что нужно сказать, это то, что никто никогда не стал бы кодировать так в реальной жизни, но это очень хороший пример того, как функциональное программирование работает в JS. Объяснение:
Number.prototype.add = function(b) { return this + b; }
- это то, что вы хотите, чтобы окончательный результат был. Поскольку 3 имеет номер прототипа, вы можете синтаксически обращаться с ним, как с объектом, и вызывать для него методы, в этих методах 3 === это правда. Зная это, вы можете сделать вывод, что методификация (добавление) должна быть правой частью приведенной выше строки кода, поэтому это должна быть функция, поэтому методикация должна быть функцией, которая принимает функцию в качестве параметра, в данном случае «добавить», и возвращает другую функцию, поэтому методизация - это так называемая функция высшего порядка. Итак, теперь вы можете «обмануть» и сделать
function methodification(func) {
return function(b) {
return this + b;
}
}
, просто вернув правую часть и игнорируя параметр fun c, но, поскольку this + b === add (this, b), вы можете сделать что говорит решение. И все, маги c не требуется.