Як викликати метод об'єкта-предка з методу об'єкта-нащадка

Є користувальницький об'єкт, створений на основі іншого об'єкта. Цей об'єкт містить метод, успадкований від об'єкта-предка, але перевизначення в його власній реалізації. (Як ми вже знаємо, це досягається присвоєнням іншої функції відповідного властивості об'єкта-нащадка.) Чи можна з перевизначеного методу нащадка якось викликати початковий метод предка?

1. У визначенні об'єкта-нащадка створюємо ще одну властивість і називаємо його, скажімо, ПО такою схемою: <Имя объекта-предка>_<Имя переопределяемого метода>.

2. Надаємо цій властивості значення властивості, відповідного переобумовленої методу.

3. Надаємо властивості, відповідному переобумовленої методу, функцію, що містить нову реалізацію цього методу.

4. Якщо нам знадобиться звернутися до початкового методу предка, ми просто викликаємо його, користуючись створеним раніше властивістю <Имя объекта-

предка> _<Имя переопределяемого метода>.

Давайте перепишемо визначення об'єкта point2 так, щоб функція fsetcoords2, заносить в властивості х і у значення координат, використовувала для цього "стару" функцію fsetcoords.

this.base = Point; this.base (ix, iy); this.color = icolor;

this.Point_setCoords = this.setCoords; this.setCoords = fSetCoords2;>

// Вираз, що робить об'єкт Point предком об'єкта Point2 Point2.prototype = new Point;

this.Point_setCoords (ix, iy); this.color = 0;>

Як додати нові властивості і методи в уже існуючий об'єкт?

Я написав відмінну функцію по роботі з рядками. Чи не можна додати її до вже існуючого об'єкта string як методу?

Нічого немає простіше! Синтаксис створення нового властивості або методу для вже існуючого об'єкта такий:

<Объект>.prototype.<Имя свойства> = <3начение свойства>;

<Объект>.prototype.<Имя метода> = <Функция, реализующая этот метод>;

Далі в цій книзі будуть приведені листинги методів trimLeft і trimRight, що видаляють з рядків початкові і кінцеві пробіли відповідно. Для додавання цих методів до об'єкта string були використані наступні вирази:

String.prototype.trimLeft = mjspsTrimLeft; String.prototype.trimRight = mjspsTrimRight;

Тут mjspsTrimLeft і mjspsTrimRight- функції, що реалізують ці методи (вони будуть описані далі).

Як в тілі методу, доданого до об'єкту String, Number або Boolean, отримати доступ до значення цього об'єкта?

<Переменная> = new <Имя стандартного объекта>(This);

var objValue = new Number (this);

В результаті обчислення наведеного вище єдиного вираження в змінної objvalue виявиться числове значення, що міститься в екземплярі об'єкта Number, т. Е. В числової змінної.

Схожі статті