0%

学习笔记 2020 11 04

学习笔记 2020-11-04

JavaScript 高级程序设计(第4版) 阅读记录

客户端检测

用户代理检测

用户代理检测通过浏览器的用户代理字符串确定使用的是什么浏览器。用户代理字符串包含在每个 HTTP 请求的头部,在 JS 中可以通过 navigator.userAgent 访问。

  • Firefox 核心是 Gecko
  • IE 核心是 Trident
  • Safari 核心是 WebKit
  • Chrome 核心是 Blink
  • Opera 核心是 Presto

软件与硬件检测

识别浏览器与操作系统
  1. navigator.oscpu

    对应用户代理字符串中操作系统/系统架构相关信息。

  2. navigator.vendor

    包含浏览器开发商信息。

  3. navigator.platform

    表示浏览器所在的操作系统。

  4. screen.colorDepthscreen.pixelDepth

    返回一样的值,即显示器每像素颜色的位深,不包含 alpha 通道。

  5. screen.orientation

    返回一个 ScreenOrientation 对象,包含 Screen Orientation API 定义的屏幕信息。

浏览器元数据
  1. 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 扩展字符碎片拼接的结果)