Когда вызывается в этом контексте, this
не то, что вы ожидаете; это происходит из окружающего контекста, потому что функция sum
не связана.
Это означает, что тело вашей функции в итоге оценивает undefined + undefined
, что составляет NaN
.
Упрощенный пример эту проблему можно увидеть с помощью:
let p = new Point(5, 8)
let f1 = p.sum
f1() //-> NaN
Вместо этого вы можете вручную передать параметр, равный this
:
f1.call(p) //-> 13
Или вы можете явно связать эту функцию с указанным параметром. c this
:
let f2 = Point.prototype.sum.bind(new Point(5, 8))
f2() //-> 13