重新介绍JavaScript(重点记录)

前言

是这一个网页的重点 来自vue3的推荐
重新介绍JavaScript
我主要记录了一些我不会的点和我觉得会疏忽的点 有点八股的感觉

日期对象

JavaScript 处理日期数据类似于 Java。这两种语言有许多一样的处理日期的方法,也都是以 1970 年 1 月 1 日 00:00:00 以来的毫秒数来储存数据类型的。

数组

数组的长度是比数组最大索引值多一的数。

var a = ["dog", "cat", "hen"];
a[100] = "fox";
a.length; // 101

对象和函数

学习 JavaScript 最重要的就是要理解对象和函数两个部分。

在经典的面向对象语言中,对象是指数据和在这些数据上进行的操作的集合。与 C++ 和 Java 不同,JavaScript 是一种基于原型的编程语言,并没有 class 语句,而是把函数用作类。

自定义对象

function Person(first, last) {
    
    
    this.first = first;
    this.last = last;
    this.fullName = function() {
    
    
        return this.first + ' ' + this.last;
    }
    this.fullNameReversed = function() {
    
    
        return this.last + ', ' + this.first;
    }
}
var s = new Person("Simon", "Willison");

新的东西:原型(prototype)链 很强大 很自由 可以随时添加

function Person(first, last) {
    
    
    this.first = first;
    this.last = last;
}
Person.prototype.fullName = function() {
    
    
    return this.first + ' ' + this.last;
}
Person.prototype.fullNameReversed = function() {
    
    
    return this.last + ', ' + this.first;
}

Person.prototype 是一个可以被 Person 的所有实例共享的对象。它是一个名叫原型链(prototype chain)的查询链的一部分:当你试图访问 Person 某个实例(例如上个例子中的 s)一个没有定义的属性时,解释器会首先检查这个 Person.prototype 来判断是否存在这样一个属性。所以,任何分配给 Person.prototype 的东西对通过 this 对象构造的实例都是可用的。

这个特性功能十分强大,JavaScript 允许你在程序中的任何时候修改原型(prototype)中的一些东西,也就是说你可以在运行时 (runtime) 给已存在的对象添加额外的方法

s = new Person("Simon", "Willison");
s.firstNameCaps();  // TypeError on line 1: s.firstNameCaps is not a function

Person.prototype.firstNameCaps = function() {
    
    
    return this.first.toUpperCase()
}
s.firstNameCaps(); // SIMON

你还可以给 JavaScript 的内置函数原型(prototype)添加东西。让我们给 String 添加一个

方法用来返回逆序的字符串:
var s = "Simon";
s.reversed(); // 没有这个方法

String.prototype.reversed = function() {
    
    
    var r = "";
    for (var i = this.length - 1; i >= 0; i--) {
    
    
        r += this[i];
    }
    return r;
}
s.reversed(); // nomiS  此时就可以使用了 在运行时就添加了

使用 Promise

这一块可能还是要看教学视频理解一下(我的理解就是可以链式调用 这是它最有用的地方)

本质上 Promise 是一个函数返回的对象,我们可以在它上面绑定回调函数,这样我们就不需要在一开始把回调函数作为参数传入这个函数了。
表现形式:

const promise = createAudioFileAsync(audioSettings);
promise.then(successCallback, failureCallback);

简写形式:

createAudioFileAsync(audioSettings).then(successCallback, failureCallback);

异步函数调用

约定

不同于“老式”的传入回调,在使用 Promise 时,会有以下约定:

  • 在本轮 事件循环 运行完成之前,回调函数是不会被调用的。
  • 即使异步操作已经完成(成功或失败),在这之后通过 then() 添加的回调函数也会被调用。
  • 通过多次调用 then() 可以添加多个回调函数,它们会按照插入顺序进行执行。
    Promise 很棒的一点就是链式调用(chaining)。

链式调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Tommy__li/article/details/127828875