在官方文档,内置对象中的object下很多属性都可以用来检测环境
拿Object.getOwnPropertyDescriptor()来做示例笔记:
在文档中它的说明;
Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)
const object1 = {
property1: 42
};
const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');
console.log(descriptor1.configurable);
// expected output: true
console.log(descriptor1.value);
// expected output: 42
语法
Object.getOwnPropertyDescriptor(obj, prop)
参数
obj
需要查找的目标对象
prop
目标对象内属性名称
返回值
如果指定的属性存在于对象上,则返回其属性描述符对象(property descriptor),否则返回 undefined。
拿补navigator中的ua来说,本地补好ua后,用Object.getOwnPropertyDescriptor()来读取navigator中的ua是可以读取的
但是在真实浏览器环境中,用Object.getOwnPropertyDescriptor()读取navigator中的ua是undefined
所以这个可以被检测到,就要把 Object.getOwnPropertyDescriptor补上