nerv_,
/**
*
* @param {(number|Point|number[])} paramOrX
* @param {number} [y]
* @constructor
*/
function Point(paramOrX, y) {
}
Хотя, как по мне, правильнее будет выбрать что-то одно -- я бы предпочел два параметра, x и y, тогда проблему с массивами решаем через new Point(...[x, y]), а для других Point'ов заведи статик метод типа Point.fromPoint(point) или метод clone в прототипе.