JavaScript三大重点同步异步与作用域和闭包及原型和原型链详解

一、同步异步

JavaScript代码的执行分为同步和异步两种方式。同步是指代码执行的顺序和书写顺序一致,代码执行时必须等待上一行执行完成,才执行下一行。异步是指代码执行的顺序和书写顺序不一致,可以在等待某些操作完成时执行其他代码,操作完成时再回调执行。

JavaScript的异步编程实现有两种方式:
1. 回调函数
2. Promise

其中Promise是回调函数的升级版,使用Promise可以处理回调地狱的问题,代码更加易读易维护。

示例1:使用回调函数实现异步操作

function ajax(url, callback){
    const xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4 && xhr.status === 200){
            callback(xhr.responseText);
        }
    };
    xhr.send();
}

ajax('https://api.github.com/users/maoyuwan', function(data){
    console.log(data);
});

示例2:使用Promise实现异步操作

function ajax(url){
    return new Promise(function(resolve, reject){
        const xhr = new XMLHttpRequest();
        xhr.open('GET', url);
        xhr.onreadystatechange = function(){
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    resolve(xhr.responseText);
                }else{
                    reject();
                }
            }
        };
        xhr.send();
    });
}

ajax('https://api.github.com/users/maoyuwan').then(function(data){
    console.log(data);
}).catch(function(){
    console.log('error');
});

二、作用域和闭包

作用域是指一个变量的生命周期和可访问范围。JavaScript的作用域分为全局作用域和函数作用域。闭包是指一个函数可以访问另一个函数内部的变量,甚至访问外部函数的变量,形成一个封闭的作用域。

示例1:全局作用域

var a = 10;

function foo(){
    console.log(a); // 10
}

foo();

示例2:函数作用域及闭包

function foo(){
    var a = 10;
    function bar(){
        console.log(a); // 10
    }
    return bar;
}

var test = foo();
test();

三、原型和原型链

JavaScript中的继承是通过原型链来实现的,每个对象都包含一个 proto 属性,指向它的原型对象,而原型对象也有 proto 属性,指向它的父级原型对象,这样就构成了一个链式结构。

示例1:原型继承

function Animal(name){
    this.name = name;
}

Animal.prototype.sayName = function(){
    console.log(this.name);
}

function Dog(name, voice){
    Animal.call(this, name);
    this.voice = voice;
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

Dog.prototype.sayVoice = function(){
    console.log(this.voice);
}

var dog = new Dog('小黑', '汪汪');
dog.sayName(); // 小黑
dog.sayVoice(); // 汪汪

示例2:原型链

function Person(){
    this.name = 'Tom';
}

Person.prototype.getName = function(){
    console.log(this.name);
}

function Student(){
    this.age = 20;
}

Student.prototype = new Person();
Student.prototype.getAge = function(){
    console.log(this.age);
}

var student = new Student();
student.getName(); // Tom
student.getAge(); // 20

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript三大重点同步异步与作用域和闭包及原型和原型链详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • JavaScript中BOM,DOM和事件的用法详解

    JavaScript中BOM,DOM和事件的用法详解 BOM是什么? BOM是指浏览器对象模型(Browser Object Model),它提供了对浏览器窗口的访问和控制。 窗口对象(Window Object) 窗口对象是BOM的顶层对象,它表示整个浏览器窗口或框架。窗口对象是可由脚本访问和操作的对象,通过它,可以控制当前窗口或框架的各项属性。 示例:获…

    JavaScript 2023年6月10日
    00
  • Javascript Math PI 属性

    JavaScript中的Math.PI属性是一个常数,表示圆周率π的值。以下是关于Math.PI属性的完整攻略,含两个示例。 Math对象的PI属性 JavaScript对象中的PI属性是一个常数,表示圆周率π的值。 下面是PI属性语法: Math.PI 下面是一个PI属性的示例: console.log(Math.PI); // 输出 3.14159265…

    JavaScript 2023年5月11日
    00
  • 详解JavaScript中循环控制语句的用法

    详解JavaScript中循环控制语句的用法 在JavaScript中,循环控制语句是非常常用的语句之一。它可以帮助我们更加方便快捷地进行重复处理的操作。下面,我们就来详细讲解一下JavaScript中的循环控制语句。 JavaScript中几种常见的循环控制语句 JavaScript中常见的循环控制语句有三种:for、while、do while。 for…

    JavaScript 2023年5月27日
    00
  • js使用xlsx读取excel文件的详细步骤

    下面是使用JavaScript中XLSX库读取Excel文件的详细步骤。 第一步:引入XLSX库 在HTML文件中,需要在<head>标签内添加如下代码引入XLSX: <script src="https://cdn.jsdelivr.net/npm/xlsx/dist/xlsx.full.min.js"><…

    JavaScript 2023年5月27日
    00
  • asp.net下模态对话框关闭之后继续执行服务器端代码的问题

    ASP.NET下模态对话框关闭之后继续执行服务器端代码的问题,可以通过以下方式实现: 1. 使用JavaScript和AJAX 在模态对话框中的“确认”或“取消”按钮中添加JavaScript代码,利用 AJAX 技术向服务器发送请求,通知服务器对话框已经被关闭,同时执行需要执行的服务器端代码。以下是示例代码: function CloseModal() {…

    JavaScript 2023年6月11日
    00
  • JS查找数组中重复元素的方法详解

    JS查找数组中重复元素的方法详解 在 JavaScript 中,有多种方式可以查找一个数组中的重复元素。下面将介绍几种常见的方法。 方法一:使用双重循环 这是最基本的方法之一,它的时间复杂度是 O(n^2)。具体的实现方法如下: const arr = [1, 2, 3, 4, 5, 6, 7, 7, 8, 9]; for (let i = 0; i &lt…

    JavaScript 2023年5月27日
    00
  • JS绘制微信小程序画布时钟

    下面就来详细讲解一下“JS绘制微信小程序画布时钟”的完整攻略,包括代码实现和相关要点说明。 一、实现思路 绘制微信小程序画布时钟,主要依赖canvas画布和javascript语言进行操作。总体的实现思路如下: 在WXML文件中添加一个canvas画布; 在WXSS文件中对canvas画布进行样式设置; 在JS文件中获取canvas画布元素,并进行画布上下文…

    JavaScript 2023年6月11日
    00
  • Ajax的使用四大步骤

    当我们需要在不刷新网页的情况下更新部分数据时,可以采用Ajax技术。Ajax是Asynchronous JavaScript And XML的简称,其核心是通过JavaScript和XML来实现异步通信。下面是Ajax的使用四大步骤的完整攻略。 1. 创建XMLHttpRequest对象 在JavaScript中,创建XMLHttpRequest对象的方式如…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部