Программирование > JavaScript & JScript

Вопрос для JScript-асов: .prototype

(1/1)

avdiev:
Коллеги,

помогите, пожалуйста, разобраться, для чего и как работет метод "object1.isPrototypeOf(object2)" и связанные с ним? Кое-что, конечно, понял, но не до конца.
Из описания этого метода можно сделать вывод, что он позволяет определить "является ли object1 экземпляром класса, базового для класса, экземпляром которго является object2?". Так я понял MSDN со своим слабым английским. Из этого можно сделать вывод, что можно наследовать классы!?
Так ли всё это и как это делать? Мне удалось получть от этого метода значение true, только в таком коде:

// класс
function aa() {}
// объект
var a = new aa();
// вот так работет, т.е. возвращает true
Debug.writeln(aa.prototype.isPrototypeOf(a));

Но ведь этот же результат можно получить и конструкцией:

Debug.writeln(aa.constructor == a);

Так даже проще. Зачем же было огород городить? Не говоря уже о том, что в качестве object1 используется класс, а не объект, т.е. очевидная ошибка в MSDN!
Или я чего-то не понимаю?

mike:

--- Цитировать ---avdiev:
Но ведь этот же результат можно получить и конструкцией:

Debug.writeln(aa.constructor == a);
--- Конец цитаты ---

Если проверишь, то значение этого выражения будет false. Корректным будет

--- Код: ---a.constructor == aa
--- Конец кода ---


Использование isPrototypeOf оправдано в таком случае:

--- Код: ---function bb () {}

function aa () {}
aa.prototype = new bb();

a = new aa();

Debug.writeln(a.constructor == aa); //false
Debug.writeln(aa.prototype.isPrototypeOf(a)); //true

--- Конец кода ---

Поскольку
constructor - "specifies the function that creates an object."

avdiev:
// Корректным будет:
//      a.constructor == aa

Верно, опечатался.

А ещё:
Debug.writeln(a.constructor == bb); //true

И вот, собственно, то, чего я добивался:
Debug.writeln(bb.prototype.isPrototypeOf(a)); //true

Не пойму, почему раньше этот же код не работал, а сейчас работает. Глюканат какой-то. Или невнимательность.

В общем, ответ я получил, большое спасибо.

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии