JavaScript метод getPrototypeOf()
JavaScript ObjectОпределение и применение
JavaScript метод getPrototypeOf() возвращает прототип переданного объекта.
Обращаю Ваше внимание, что создаваемый объект наследует свойства от прототипа. Каждый объект в Javascript имеет внутреннюю ссылку на другой объект, называемый его прототипом. У объекта-прототипа также может быть свой собственный прототип и так далее до тех пор, пока эта цепочка не завершится объектом, у которого свойство prototype равно null. Это значение указывает на то, что объект не имеет прототипа и является завершающим звеном в цепочке прототипов.
Для того, чтобы установить или изменить прототип указанному объекту Вы можете воспользоваться методом setPrototypeOf().
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
getPrototypeOf() | 5.0 | 3.5 | 12.1 | 5.0 | 9.0 | Да |
JavaScript синтаксис:
Object.getPrototypeOf( obj );
Версия JavaScript
ECMAScript 5.1 (реализовано в JavaScript 1.8.5)Значения параметров
Параметр | Описание |
---|---|
obj | Объект, значение прототипа которого необходимо получить. Обязательный параметр. |
Исключения
Тип исключения | Описание |
---|---|
TypeError | Возникает в том случае, если значение параметра, определяющее целевой объект не является объектом. Начиная с версии ECMAScript 6 параметр, который не является объектом будет сначала приведён к объекту. |
Пример использования
let someObject = { getName: function(){ // возвращает значение свойства firstName текущего объекта return this.firstName } } // создаем новый объект let myObj = Object.create( someObject, { // указываем, что объект прототип соответствует объекту someObject firstName: { // добавляем новое свойство value: "Boris" // указываем значение свойства } }); console.log( myObj.getName() ); // "Boris" // возвращаем прототип переданного объекта и сравниваем его с объектом someObject console.log( Object.getPrototypeOf( myObj ) === someObject ); // true Object.getPrototypeOf( "someString" ) // содержимое String.prototype
В этом примере мы иницилизировали переменную, содержащую объект, который содержит метод возвращающий значение свойства firstName текущего объекта.
Далее с использованием метода create() мы создали новый объект с указанным объектом прототипом someObject и одним собственными (неунаследованным) свойством (ключ (атрибут) value устанавливает значение для свойства).
После этого мы с помощью унаследованного свойства (метода getName) выводим в консоль значение свойства firstName. Затем с помощью метода getPrototypeOf() мы возвращаем прототип переданного объекта и проверяем соответствует ли он объекту someObject. Результат проверки будет положительный.
Кроме того, мы с в качестве значения параметра метода getPrototypeOf() передаем строку, которая будет преобразована к объекту, а возвращаемое значение будет соответствовать String.prototype.
Следующий пример демонстрирует как с помощью метода getPrototypeOf() может проиходить проверка типов данных:
// инициализируем переменные содержащие регулярное выражение и экземпляр объекта Error let reg = /z/, err = new Error( "oops i did it again" ); Object.getPrototypeOf( reg ) === RegExp.prototype; // true Object.getPrototypeOf( err ) === Error.prototype; // trueJavaScript Object