Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【红宝书第4版读书笔记】05-基本引用类型 #13

Open
yuqingc opened this issue Sep 9, 2020 · 1 comment
Open

【红宝书第4版读书笔记】05-基本引用类型 #13

yuqingc opened this issue Sep 9, 2020 · 1 comment
Labels
javascript about JavaScript PJWD4 红宝书第4版读书笔记

Comments

@yuqingc
Copy link
Member

yuqingc commented Sep 9, 2020

05 基本引用类型

Date

参考文档

RegExp

参考文档

基本类型的包装类型(Wrapper Types)

每次读取 String 类型的时候都会经历三个步骤

  1. 创建 String 的实例

  2. 调用实例上特定的方法

  3. 销毁实例

解释下列代码

let s1 = "some text";
s1.color = "red"; // 会创建一个 String 实例,但是这一行执行完毕就会销毁该对象
console.log(s1.color); // 这一行会重新创建一个实例,因此会丢失 color 属性
// undefined
  • 注意区分 new String()String() 的区别,不清楚请看 03 章笔记

Boolean

  • 注意 new Boolean(false) 是一个对象,所有的对象在逻辑运算操作都会被转换为 true

  • 尽量避免使用 new Boolean()(所有的 Wrapper 类型都尽量不要直接使用 new,所以最新的 BigInteger 和 Symbol 类型如果使用 new 就会报错)

String、Number 等方法请查阅文档

JS 中内置的单例对象

Global 对象

  • Global 为内置全局对象,该对象不能直接访问,但是可以访问其方法,比如 isNaN, isInfinite(), parseInt, parseFloat 等,这些内置的函数本质上是 Global 对象上的方法

  • Global 对象上的其他方法

    • encodeURI, encodeURIComponent, decodeURI, decodeURIComponent

    • eval

  • Global 对象上的属性

    • 基本类型的值: undefined, NaN, Infinity

    • 构造函数 Object, Array, Function, Boolean, String, Number, Date, RegExp, Symbol (再加一个红宝书没说的BigInt

    • 错误类型构造函数 Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError

  • Window 对象

    • 因为 ECMA-262 没有规定可以直接访问 Global 对象,因此浏览器通过 window 对 Global 对象进行了代理

    • 因此 window 包含了 Global 对象的所有属性和方法,还有 BOM 的其他方法

  • 除了通过 window 访问 Global 对象,还可以通过 this 来访问

    // 注意,全局 this 在严格模式下会返回 undefined
    let global = function() {
      return this;
    }();

Math 对象

  • 使用 Math 提供的方法性能比你用 JS 自己写的要好

  • 其他方法查看文档

globalThis

globalThis 是 ES2020 新增的,红宝书没有,我这里扩展说一下。因为不同平台访问 Global 的方法不一样,浏览器通过 window,Node 通过 global。因此需要统一一个标准。

注意 globalThis 并不是上文说的 Global 对象。Global 对象在 JS 中是不能直接访问的。在浏览器中 globalThis 指向了 window 对象。

@yuqingc yuqingc added javascript about JavaScript PJWD4 红宝书第4版读书笔记 labels Sep 9, 2020
@shen-yu
Copy link

shen-yu commented Sep 11, 2020

🍺 star了~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
javascript about JavaScript PJWD4 红宝书第4版读书笔记
Projects
None yet
Development

No branches or pull requests

2 participants