Каков наиболее надежный подход к обнаружению поддержки функций браузера?

Позволять'скажем, я хочу обнаружить поддержку уведомлений (http://notifications.spec.whatwg.org/) в библиотеке JavaScript.

я могу использоватьwindow.Notification !== undefined, Но что, если пользователи библиотеки (или другой библиотеки) также имеют какую-то глобальнуюNotification объект, определенный для совершенно другой цели?

С другой стороны, что, если другая библиотека является полифилом? Тогда ихNotification объект приемлемый Должен ли я тестировать все методы в дополнение к тестированию глобального объекта?

Обновить:

Я заметил интересную вещь в одномУведомления polyfill:

ret[toString] = function() {
    return 'function Notification() { [native code] }';
};

Насколько надежно полагаться на что-то подобное, чтобы определить, является ли это нативным / polyfill объектом?

Ответы на вопрос(2)

Ваш ответ на вопрос