JavaScript知识架构


前言

参考《[重学前端](https://time.geekbang.org/column/article/77804)》整理。

用一定的词法或语法,表达一定的语义,从而操作运行时
在这里插入图片描述

1. 运行时

1.1 数据结构

1.1.1 类型

JavaScript有7种语言类型:
null,number,undefined,symbol,string,bool,object(口诀:nnussb+o)

  • null表示定义了但是为空,此处不应该有值的存在,null是对象
  • undefined表示没有赋值,undefined是变量。
  • number 0有正负,通过检测 1/x 是 Infinity 还是 -Infinity区分。
    0.1+0.2 不能 =0.3:
    console.log( Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON);
  • Symbol
    var o = new Object

    o[Symbol.iterator] = function() {
        var v = 0
        return {
            next: function() {
                return { value: v++, done: v > 10 }
            }
        }        
    };

    for(var v of o) 
        console.log(v); // 0 1 2 3 ... 9
  • Object 一切有形和无形物体的总称。
    为什么给对象添加的方法能用在基本类型上?
    因为 . 运算符提供了装箱操作,它会根据基础类型构造一个临时对象,使得我们能在基础类型上调用对应对象的方法。
类型转换
  • StringToNumber:多数情况下,Number 是比 parseInt 和 parseFloat 更好的选择。
  • 装箱转换:把基本类型转换为对应的对象。
  • 拆箱转换

JavaScript 基于原型
ES6类:


class Animal { 
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  constructor(name) {
    super(name); // call the super class constructor and pass in the name parameter
  }

  speak() {
    console.log(this.name + ' barks.');
  }
}

let d = new Dog('Mitzie');
d.speak(); // Mitzie barks.
对象
  • 宿主对象(host Objects):由 JavaScript 宿主环境提供的对象,它们的行为完全由宿主环境决定。
    浏览器 window
  • 内置对象(Built-in Objects):由 JavaScript 语言提供的对象。
    固有对象(Intrinsic Objects ):由标准规定,随着 JavaScript 运行时创建而自动创建的对象实例。
    https://www.ecma-international.org/ecma-262/9.0/index.html#sec-well-known-intrinsic-objects
    原生对象(Native Objects):可以由用户通过 Array、RegExp 等内置构造器或者特殊语法创建的对象。
    在这里插入图片描述

普通对象(Ordinary Objects):由{}语法、Object 构造器或者 class 关键字定义类创建的对象,它能够被原型继承。

1.1.2 实例

应用和机制

1.2 执行过程(算法)

事件循环
时间循环
这一次,彻底弄懂 JavaScript 执行机制
微任务执行
函数执行
语句级的执行
Promises/A+
史上最易读懂的 Promise/A+ 完全实现
使用 Promise
初学者应该看的JavaScript Promise 完整指南
最详细的Promise源码实现,再被面试问到轻松解答
JavaScript Promises: An introduction

2.文法

词法
语法

3.语义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值