学习笔记 2020-11-04
JavaScript 高级程序设计(第4版) 阅读记录
客户端检测
用户代理检测
用户代理检测通过浏览器的用户代理字符串确定使用的是什么浏览器。用户代理字符串包含在每个 HTTP 请求的头部,在 JS 中可以通过 navigator.userAgent
访问。
Firefox
核心是Gecko
IE
核心是Trident
Safari
核心是WebKit
Chrome
核心是Blink
Opera
核心是Presto
软件与硬件检测
识别浏览器与操作系统
navigator.oscpu
对应用户代理字符串中操作系统/系统架构相关信息。
navigator.vendor
包含浏览器开发商信息。
navigator.platform
表示浏览器所在的操作系统。
screen.colorDepth
和screen.pixelDepth
返回一样的值,即显示器每像素颜色的位深,不包含 alpha 通道。
screen.orientation
返回一个
ScreenOrientation
对象,包含Screen Orientation API
定义的屏幕信息。
浏览器元数据
Geolocation API
可以让浏览器脚本感知当前设备的地理位置。
现代 JavaScript 教程
可迭代对象
Array.from
这个函数接收一个必选的可迭代对象或类数组对象,接收两个可选的参数,第一个是映射函数,第二个是映射函数的 this
值。
let range = {
from: 1,
to: 5
};
range[Symbol.iterator] = function () {
return {
current: this.from,
last: this.to,
next() {
if (this.current <= this.last) {
return { done: false, value: this.current++ };
} else {
return { done: true };
}
}
};
};
let arr = Array.from(range, num => num * num);
console.log(arr); // [1, 4, 9, 16, 25];
function slice(str, start, end) {
return Array.from(str).slice(start, end).join('');
}
let str = '𝒳😂𩷶';
console.log(slice(str, 1, 3)); // 😂𩷶
// 原生方法不支持识别代理对(译注:UTF-16 扩展字符)
console.log(str.slice(1, 3)); // 乱码(两个不同 UTF-16 扩展字符碎片拼接的结果)