2013-08-19 4 views
2

Допустим, у меня естьJavascript наследование конструктора с переменными

function Point(x, y) 
{ 
    this.X = x; 
    this.Y = y; 
} 

, и я хочу иметь класс point2. Использование this и this я придумал этот код:

function Point2(x, y) 
{ 
    this.X = x; // <- 
    this.Y = y; // <- 
} 

Point2.prototype = new Point(); 
Point2.prototype.constructor = Point; 

Однако, если у меня есть много переменных или много наследств, я не хочу, чтобы повторить задание свойств все время (см линии с <-. Если я пишу это так, как он говорит, что во второй ссылке:

Point2.call(this); 

, я получаю сообщение об ошибке: Максимальный вызов размер стека превышен, так как он называет себя, который выглядел подозрительно для меня с самого начала

.

Итак, есть ли способ вызвать родительский конструктор с теми же входящими значениями, а не повторять весь код?

+0

Ваше наследство неправильно. http://stackoverflow.com/a/15045616/34397 – SLaks

ответ

4

Вы должны вызвать родительский конструктор, а не свой собственный конструктор:

Point.call(this, x, y); 

Если аргументы всегда то же самое, вы также можете написать Point.apply(this, arguments);

+0

Отлично, это сделало работу, также спасибо за «применить» для всех аргументов! –

Смежные вопросы