JavaScript метод getPrototypeOf()

JavaScript Object

Определение и применение

JavaScript метод getPrototypeOf() воз­вра­ща­ет про­то­тип переданного объ­ек­та.


Обращаю Ваше внимание, что создаваемый объект наследует свойства от про­то­ти­па. Каждый объект в Javascript имеет внутреннюю ссылку на другой объект, называемый его прототипом. У объекта-прототипа также может быть свой собственный прототип и так далее до тех пор, пока эта цепочка не завершится объектом, у которого свойство prototype равно null. Это значение указывает на то, что объект не имеет прототипа и является завершающим звеном в цепочке прототипов.


Для того, чтобы установить или изменить прототип указанному объекту Вы можете воспользоваться методом setPrototypeOf()ECMAScript 2015.

Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
getPrototypeOf()5.03.512.15.09.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;  // true
JavaScript Object