假设我想在JavaScript库中检测对通知的支持 (http://notifications.spec.whatwg.org/)。
我可以使用 window.Notification !== undefined
。但是,如果该库的用户(或另一个库)还定义了某种全局 Notification
对象来完成完全不同的任务怎么办呢?
另一方面,如果另一个库是一个polyfill呢?那么他们的 Notification
对象是可以接受的。我是否应该除了检查全局对象外,还测试所有方法呢?
更新:
我在一个通知 polyfill中注意到了一个有趣的事情:
ret[toString] = function() {
return 'function Notification() { [native code] }';
};
依靠这种方式来检测一个对象是原生对象还是polyfill对象的可靠性如何?
Notification
对于类似的东西来说是一个非常常见的名称,因此冲突是很可能的。 - Andrey Shchekin