Возможно, Вы захотите узнать, какие объекты находятся в цепочке прототипов данного объекта, чтобы определить, из какого объекта данный объект наследует свойства. В языках на базе классов Вы можете использовать для этого операцию instanceof. В JavaScript нет instanceof, но Вы сами можете написать такую функцию.
Как сказано в "Наследовании Свойств", если Вы используете операцию new с функцией-конструктором для создания новых объектов, JavaScript устанавливает в свойство __proto__ нового объекта значение свойства prototype функции-конструктора. Вы можете использовать это для проверки цепочки прототипов.
Например, у Вас есть уже показанный ранее набор определений с соответственно установленными прототипами. Создайте объект __proto__ так:
chris = new Engineer("Pigman, Chris", ["jsd"], "fiji");С эти объектом все следующие операторы true:
chris.__proto__ == Engineer.prototype;Имея это, Вы можете написать функцию instanceOf:
function instanceOf(object, constructor) {При таком определении все следующие выражения true:
instanceOf (chris, Engineer)Но следующее выражение будет false:
instanceOf (chris, SalesPerson)