随着浏览器的更新,JS也在新增功能功能。这些功能为我们开发带来了很大的便利。在旧浏览器上使用,需要引入相关的polyfill才能用。然而,有些功能在旧浏览器中是无法完美实现的,只有在一定条件下才能使用。本文将为大家分析这些功能的使用限制。
Symbol
1.禁止用typeof和instanceof,如果要判断,建议判断是否是string。
2.遍历对象成员时会被遍历到,polyfill可以把Object.keys也改了,但是JSON.stringify一般不会改造,需注意。
defineProperty
1.在IE8中Object.defineProperty只能对DOM对象使用。
2.普通对象判断兼容性时应用Object.defineProperties判断。
3.使用defineProperty的目的主要是为了实现accessor,由于低版本浏览器不支持accessor。建议定义时用Reflect.defineProperty,访问时用Reflect.get、Reflect.set可以让低版本浏览器运行accessor。
getPrototypeOf
1.不得修改对象的constructor属性。
Proxy
1.target对象不能是DOM元素。
2.target对象要监听的属性必须事先定义好。
URL
1.不能修改属性
currentScript
1.IE8以下只能用函数获取,不能用属性获取。
2.IE11和非IE的低版本中不能完美获取。