Спецификации очень расплывчаты, когда речь идет о том, как typeof должен вести себя с объектом плагина, так как ECMAScript не был написан с учетом плагинов. Следовательно, в IE с элементом управления activex он будет склонен отвечать «объектом», потому что именно так они решили с этим справиться; Firefox и я полагаем, что оба Safari отвечают «функцией», потому что именно так они решили с этим справиться.
Оба ответа имеют смысл; помните, что когда вы получаете доступ к плагину с помощью document.getElementById ("myPlugin"), вы не просто получаете ссылку на плагин, вы получаете ссылку на элемент HTML, в котором размещается плагин, что происходит с вызовами прокси плагин. Будучи HTML-элементом, он имеет другие свойства и методы, о которых вы даже не знаете.
Кажется, что в этом случае объект будет иметь больше смысла, но объект обычно не имеет функции по умолчанию, поэтому я предполагаю, что firefox решил ответить, что это функция (), потому что нет способ в NPAPI запросить, чтобы видеть, существует ли функция по умолчанию, кроме вызова InvokeDefault. хотя вы также можете вызывать метод по умолчанию в интерфейсе ActiveX IDispatch, на самом деле это скорее побочный эффект, чем конструктивная особенность.
Не очень научный ответ, но тот, который может помочь.