尚硅谷JavaScript高级学习笔记

01 准备

JavaScript中函数是对象。我们后续描述构造函数的内存模型时,会将构造函数称为构造函数对象。

02 数据类型

typeof 运算符来查看值的类型,它返回的是类型的字符串值

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

== 会做数据转换
在这里插入图片描述
在这里插入图片描述

03 相关问题

在这里插入图片描述

04数据_变量_内存

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

05相关问题1

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

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

06相关问题2

07对象

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

08函数

在这里插入图片描述

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

09回调函数

在这里插入图片描述

在这里插入图片描述

10 lIFE

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

11 函数中的this

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

在这里插入图片描述

12 关于语句分号问题

在这里插入图片描述

13 webstorm设置

14 复习

15、函数的prototype

在这里插入图片描述

function Func() { }
console.log(Func);
console.log(Func.prototype);

输出:
在这里插入图片描述
每个函数都有一个prototype属性,它默认指向一个0bject空对象(即称为:原型对象)

function Func() { }
console.log(Func.prototype.constructor === Func);// true
console.log(Date.prototype.constructor === Date);// true

在这里插入图片描述
给原型对象添加属性、方法,函数的所有实例对象自动拥有原型中的属性(方法)

function Func() { }
Func.prototype.name = "LCM";
Func.prototype.hello = function(){
    console.log("hello world!");
}
let f =  new Func();
console.log(f.name);//LCM
console.log(f.hello());//hello world!

16、显式原型和隐式原型

在这里插入图片描述

       function Fun(){}
       console.log(Fun.prototype);

       let f = new Fun();
       console.log(f.__proto__);

       console.log(Fun.prototype === f.__proto__);

在这里插入图片描述
__proto__prototype中保存的都是原型对象的地址值。

Fun的prototype、f的__proto__属性什么时候加的?
JavaScript引擎在解析Fun代码的时候就创建了(内部代码应该是:this.prototype={});
f的__proto__在new创建对象的时候加的(this.proto = Fun.prototype )
在这里插入图片描述

17、原型链

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

在这里插入图片描述
⭐️⭐️⭐️⭐️⭐️ 记住:实例对象的隐式原型等于构造函数的显式原型;

所有函数对象的隐式原型都是一样的,都是Function对象的原型对象,因为都是new Function产生的();

⭐️⭐️⭐️⭐️⭐️特殊:Function对象的隐式原型和显式原型是同一个

Object构造函数对象的隐式原型也是Function的显式原型。也就是说Object的构造函数对象也是new Funtion()创建的。

在这里插入图片描述

18 原型链-补充

在这里插入图片描述

19 原型链属性问题

在这里插入图片描述

20 探索instanceof

在这里插入图片描述
instanceof的作用:左面对象是不是右面构造函数对象的实例
在这里插入图片描述

21 原型- 面试题

题1

在这里插入图片描述

题2

function Foo() { }

Object.prototype.f1 = function () {
    console.log("f1()");
}
Object.prototype.f2 = function () {
    console.log("f2()");
}

let f = new Foo();
f.f1();// => f1()
f.f2();// => f1()

Foo.f1();// => f1()
Foo.f2();// => f1()

22 变量提升与函数提升

在这里插入图片描述

22.1 变量提升

var a = 3;
function fn() {
    console.log(a);// undefined
    var a = 4;
}
fn();

输出undefined,因为上面代码会转化为下面的代码,变量做了提升

var a = 3;
function fn() {
	var a;
    console.log(a);// undefined
    a = 4;
}
fn();

22.1函数提升

23 执行上下文

在这里插入图片描述

⭐️⭐️⭐️⭐️⭐️
执行第一行代码前,JavaScript已经准备好了全局上下文,并已经在window对象中添加了属性和方法。注意:此时还没有给对象赋值,方法

23.1 全局执行上下文

在这里插入图片描述

23.2 函数执行上下文

在这里插入图片描述

调用函数时

第1步:在准备执行函数体之前,会在调用栈创建一个栈帧压入调用栈中。一个函数对应一个栈帧

第2步:对局部数据进行预处理
(1)形參变量==>赋值(实参)>添加为执行上下文的属性
(2)arguments
>赋值(实参列表),添加为执行上下文的属性
(3)var定义的局部变量==>undefined,添加为执行上下文的属性
(4)function声明的函数 >赋值(fun),添加为执行上下文的方法水
(5)this
>赋值(调用函数的对象)

第3步:开始执行函数体代码
在这里插入图片描述

24 执行上下文栈

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

25 面试题

26 复习

27 作用域与作用域链

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自己的作用找不到就向上面的作用域找,一直找到最顶层-全局上下文中。

作用域链

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

28作用域_面试题

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

29 循环遍历加监听

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

 /* 闭包 */
for (let i = 0; i < buttons.length; i++) {
    (function (i) {//这里的i是局部变量
        buttons[i].onclick = function () {
            alert("第" + (i + 1) + "按钮")
        }
    })(i)// 这里的i是全局变量
}

30 闭包理解

在这里插入图片描述
什么时候产生闭包,外部函数调用时,包含外部函数数据的内部函数被解析了,此时会产生闭包。

31 常见的闭包

在这里插入图片描述

32 闭包的作用

在这里插入图片描述

33 闭包的生命周期

在这里插入图片描述

在这里插入图片描述

34 [闭包,应用_自定义JS模块

在这里插入图片描述

(1)方式1

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

(2)方式2

在这里插入图片描述

34-1 闭包的缺点-内存溢出和内存泄漏

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

在这里插入图片描述

35 内存溢出与内存泄露

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

36 面试题

题1

在这里插入图片描述

题2

在这里插入图片描述

37 对象创建模式

(1)Object构造函数模式

在这里插入图片描述

(2)对象字面量模式

在这里插入图片描述

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

(5)

在这里插入图片描述

38 原型链继承

(1) 原型链继承

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

39 组合继承

(2)借用构造函数

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

(3)原型链 + 借用构造函数

在这里插入图片描述

在这里插入图片描述

40 复习

41 闭包终极面试题

42 进程与线程

43 浏览器内核

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

44 定时器引发的思考

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

45 js是单线程执行的

在这里插入图片描述

46 事件循环模型

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

在这里插入图片描述

在这里插入图片描述

47 H5 web Workers多线程

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

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

48 复习

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/440796.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

办公电脑换成MacBookPro半年之后……

小白是从2008年开始接触电脑的&#xff0c;当时朋友给我注册的第一个QQ账号是2008年4月。 从此&#xff0c;小白一直认为电脑全部都是Windows系统。直到上大学那年&#xff0c;看到了外教老师的MacBookPro…… 折腾电脑的开始居然是起源于诺基亚手机&#xff0c;给半智能S40的…

Igraph入门指南 3

4、图转换到其他R数据结构 图是对实体关系的表达&#xff0c;在igraph中&#xff0c;图可以转换为三种数据结构。 4-1 图转邻接矩阵&#xff1a;as_adjacency_matrix | as_adj&#xff0c;结果是矩阵 邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵&#xff0c;但本函数使用…

老司机都懂的!【打赏】完美运营的最新视频打赏系统

完美运营的最新视频打赏系统优于市面上95%的打赏系统&#xff0c;与其他打赏系统相比&#xff0c;功能更加强大&#xff0c;完美运营且无bug。支付会调、短链接生成、代理后台、价格设置和试看功能等均没有问题。 以上为原简介&#xff0c;经测试验证。成功搭建并可以正常进入…

Linux学习之线程

目录 线程概念 1.什么是线程&#xff1f; 2.线程的优缺点 3.线程异常 4.线程用途 线程操作 1.如何给线程传参 2.线程终止 3.获取返回值 4.分离状态 5.退出线程 线程的用户级地址空间&#xff1a; 线程的局部存储 线程的同步与互斥 互斥量mutex 数据不一致的主要过…

Sora的核心技术预测

在ChatGPT火爆全网的一年后&#xff0c;OpenAI公司又一次大显身手&#xff1a;推出了全新的文生视频大模型Sora。直接输入文字提示词&#xff0c;即可直接生成长达60秒的视频。 “现实真的要不存在了。” 马斯克直接大呼&#xff1a;人类彻底完蛋了&#xff01; 马斯克为什么…

CDN(内容分发网络):加速网站加载与优化用户体验

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【NR技术】 3GPP支持无人机的关键技术以及场景

1 背景 人们对使用蜂窝连接来支持无人机系统(UAS)的兴趣浓厚&#xff0c;3GPP生态系统为UAS的运行提供了极好的好处。无处不在的覆盖范围、高可靠性和QoS、强大的安全性和无缝移动性是支持UAS指挥和控制功能的关键因素。与此同时&#xff0c;监管机构正在调查安全和性能标准以及…

WinSCP下载安装并结合内网穿透实现固定公网TCP地址访问本地服务器

文章目录 1. 简介2. 软件下载安装&#xff1a;3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 ​ Winscp是一个支持SSH(Secure SHell)的可视化SCP(Secure Copy)文件传输软件&#xff0c;它的主要功能是在本地与远程计…

二叉树入门

这篇博客通过手动创建的一个简单二叉树&#xff0c;实现二叉树遍历&#xff0c;返回节点&#xff0c;叶子个数&#xff0c;查找结点等相关操作。 1. 二叉树的概念 二叉树不为空时&#xff0c;由根节点&#xff0c;左/右子树组成&#xff0c;逻辑结构如下&#xff0c;当二叉树…

上班族真香副业:工资4500,靠steam游戏搬砖项目月入过w

steam游戏搬砖项目已经存在好多年了&#xff0c;这个项目比较冷门且能持续稳定盈利&#xff0c;是一个非常不错的项目。即使你没玩过steam游戏也没关系&#xff0c;这个steam游戏搬砖项目既不需要你会玩游戏&#xff0c;也不需要你懂英语。 steam游戏搬砖项目的盈利点在汇率差和…

Lwip之TCP服务端示例记录(1对多)

前言 实现多个客户端同时连接初步代码结构已经实现完成(通过轮训的方式) // // Created by shchl on 2024/3/8. // #if 1#include <string.h> #include "lwip/api.h" #include "FreeRTOS.h" #include "task.h" #include "usart.h&…

寻找数组的中心索引

给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不存在元素。这一点…

斐讯N1 刷coreelec 笔记

1.下载恩山的镜像 下载好后不需要刷优盘 这个很方便&#xff0c;可以勾选擦除flash &#xff08;如果第一次装&#xff09; 升级可以不用勾选 详细使用参考恩山大佬的描述 2.下载插件 想装openwrt 发现镜像里面 coreelec-addons 挂了&#xff0c;研究了好长时间可以 去githu…

一文扫荡,12个可视化图表js库,收藏备用。

hello&#xff0c;我是贝格前端工场&#xff0c;可视化图表在web前端开发中经常碰到&#xff0c;是不是很疑惑这些炫酷的图表是怎么实现的&#xff0c;其实是通过js库开发的&#xff0c;本文带来12个javascript库的介绍&#xff0c;欢迎关注我&#xff0c;阅读精彩内容。 一、什…

2024 RubyMine 激活,分享几个RubyMine 激活的方案

文章目录 RubyMine 公司简介我这边使用RubyMine 的理由RubyMine 2023.3 最新变化AI Assistant 正式版对 AI 生成名称建议的支持改进了 Ruby 上下文单元测试生成 RailsRails 应用程序和引擎的自定义路径Rails 路径的自动导入对存储在默认位置之外的模型、控制器和邮件器的代码洞…

Express学习(三)

Express中间件 中间件的概念 什么是中间件 中间件&#xff0c;特指业务流程的中间处理环节。Express中间件的调用流程 当一个请求到达Express的服务器之后&#xff0c;可以连续调用多个中间件&#xff0c;从而对这次请求进行预处理。类似于下图所示 Express中间件的格式 Expr…

C++进阶之路---继承(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、继承与友元 友元关系不能继承&#xff0c;也就是说基类友元不能访问子类私有和保护成员。 class Student; class Per…

[C语言]——分支和循环(4)

目录 一.随机数生成 1.rand 2.srand 3.time 4.设置随机数的范围 猜数字游戏实现 写⼀个猜数字游戏 游戏要求&#xff1a; &#xff08;1&#xff09;电脑自动生成1~100的随机数 &#xff08;2&#xff09;玩家猜数字&#xff0c;猜数字的过程中&#xff0c;根据猜测数据的⼤…

【LaTeX】行内代码块、行间代码块的插入以及高亮(懒人版)

文章目录 思路和优点基本框架行内代码行间代码pythoncpp 所支持的语言所支持的代码风格 思路和优点 思路是listingsminted包&#xff0c; 一个负责插入代码一个负责高亮代码 这种方法显著的优点在于&#xff1a;完全不需要自定义代码风格 使用其他方法时&#xff0c;你定义好…

嵌入式学习36-TCP要点及http协议

TCP发送文件的粘包问题 1. 例&#xff1a; 发端 1.flv-------->收端 1.flv csfga 2.解决 1. sleep&#xff08;1&#xff09; 延时发送 2.自…
最新文章