js高级 笔记02

目录

01 object提供的一些静态方法

02 词法作用域

03 作用域链

04 arguments的使用

05 开启严格模式

06 高阶函数

07 闭包


01 object提供的一些静态方法

        Object.create() 对象继承

        Object.assign(对象1,对象2)  对象合并

                可以将对象2 里面的可枚举属性和自身的属性合并到对象1里面 返回合并后的对象

                 如果属性有重复的  那么对象2中的属性值会覆盖对象1的属性值

        Object.keys() 获取对象所有键放到Array数组里面

        Object.values() 获取对象所有值放到Array数组里面

        Object.entries() 获取对象所有键值放到Array数组里面

                返回值是一个二维数组 每个小数组的0号元素是键 1号元素是值

        Object.freeze() 冻结对象  无法增删改属性

        Object.isFrozen() 判断对象是否被冻结

                对象可以换成新地址 但是原有的对象内部无法修改

        Object.seal()密封对象

        Object.isSealed() 判断对象是否被密封

                对象被密封后 不可以增删属性 但是原有的属性是可以修改的

        Object.getPrototypeOf(对象)    返回指定对象的原型

        Object.is(value1,value2)  比较两个值是否相等  

                例: console.log(Object.is(NaN,NaN)); // true

02 词法作用域

        词法(代码)作用域 就是代码在编程过程中体现出来的作用范围   

        代码一旦写好了不用执行 作用域范围就已经确定好了 这个就是所谓的词法作用域

03 作用域链

        js中的作用域分为两种:

             作用于所有代码执行的环境(整个script标签内部) 或者说一个独立的js文件 就是全局作用域

             作用于函数内部的代码环境 就是局部作用域 (因为和函数有关系 所以有的时候也叫做函数作用域)

        作用域链:

                内部函数访问外部函数的变量 采取的是链式查找的方式来决定取哪个值 这种结构

                我们称之为作用域链   就近原则

04 arguments的使用

        只要有函数就有arguments对象

        arguments对象 里面存储了所有传递过来的参数

        arguments的返回值 是一个伪数组 并不是真正意义上的数组

        伪数组:

                1.具有数组的length属性  

                2.按照索引的方式进行存储的

05 开启严格模式

         'use  strict ' ; // 开启严格模式

        1.严格模式下变量名必须先声明再使用

        2.严格模式下 不能随意删除声明好的变量

        3.严格模式下全局作用域中的函数中的this是undefined

        4.在严格模式下 构造函数不加new调用就报错

        5.在严格模式下 定时器中 this还是指向window

        6.在严格模式下 函数里面的参数不允许重名

06 高阶函数

        

07 闭包

        闭包指的是有权访问另一个函数作用域中变量的函数

        闭包的作用: 主要是延伸了变量的作用范围

        局部变量:

                1.局部变量 外部没办法直接使用

                2.局部变量使用完毕后 会被js垃圾回收清理

        如果形成了闭包 局部变量就不会被清理

        闭包函数的基本结构:

                1.函数嵌套函数

                2.外层函数有局部变量

                3.里层函数使用外层函数的局部变量

                4.里层函数可以被反复的调用

        垃圾回收:

                对内存管理的机制  主要清理的就是局部变量 只对函数内部生效

                所以就会清理释放  对全局变量不会被清理 全局的是添加给window的

                是不会被回收的  所以不要创建全局的变量  浪费内存空间 如果不想局部变量被回收

                就可以使用闭包  因为里层的函数用到了外层函数内的局部变量  里函数会返回外部

                里函数的生命周期得到了延续  所以闭包里的变量会被延续下来

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab r2023b Simulink 给子系统添加封面

写这篇记录的原因是,r2023b版本里改动了自定义封面的界面,而我是一个新手小白,零基础,探索一天之后发现实现方法。最终效果如图: 步骤1:打开软件,点击Simulink,再打开含有子系统的工…

【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题7

【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题7 信息安全管理与评估 网络系统管理 网络搭建与应用 云计算 软件测试 移动应用开发 任务书,赛题,解析等资料,知识点培训服务 添加博主wx:liuliu548…

SpringSecurity源码4

SecurityContext.class 当前线程关联的最小安全信息,提供Authentication的get/set方法 SecurityContextHolder.class SecurityContext的持有器 // 全部委托给策略类public static void setContext(SecurityContext context) {strategy.setContext(context);}public …

FFmpeg: 自实现ijkplayer播放器--03UI界面设计

文章目录 UI设计流程图UI设计界面点击播放功能实现 UI设计流程图 UI设计界面 主界面 控制条 播放列表 画面显示 标题栏 设置界面 提示框 点击播放功能实现 槽函数实现: connect(ui->ctrlBarWind, &CtrlBar::SigPlayOrPause, this, &Main…

[渗透测试学习] TwoMillion-HackTheBox

TwoMillion-HackTheBox 信息搜集 nmap扫描一下 nmap -sV -v 10.10.11.221扫描结果 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0) 80/tcp open http nginx 3851/tcp f…

4.18作业

顺序栈: #include "seq_stack.h" seq_p creat_stack() //从堆区申请顺序栈的空间 {seq_p S(seq_p)malloc(sizeof(seq_stack));if(SNULL){printf("空间申请失败\n");return NULL;}bzero(S->data,sizeof(S->data));S->top-1;return S; …

多任务学习,在共享层,究竟在共享什么?

在多任务学习中,共享层所共享的主要是网络结构和参数。具体来说,当多个任务在共享层进行参数硬共享时,它们使用的是相同的网络结构(例如三层全连接神经网络),并且这些网络层的权重(weights&…

深入解析Nacos配置中心的动态配置更新技术

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在微服务架构中,配置管理变得尤为关键。Nacos,作为一个开源的、易于使用的、功能丰富的平台,为…

【MATLAB源码-第28期】基于matlab的16QAM定时同步仿真,采用gardner算法,Costa锁相环。

操作环境: MATLAB 2022a 1、算法描述 正交幅度调制(QAM,Quadrature Amplitude Modulation)是一种在两个正交载波上进行幅度调制的调制方式。这两个载波通常是相位差为90度(π/2)的正弦波,因此…

02 - Git 之命令 + 删除 + 版本控制 + 分支 + 标签 + 忽略文件 + 版本号

1 Git相关概念 1.1 以下所谈三个区,文件并不只是简单地在三个区转移,而是以复制副本的方式转移 使用 Git 管理的项目,拥有三个区域,分别是 Working area工作区(亦称为 工作树Working Tree)、stage area …

[渗透测试学习] Monitored-HackTheBox

Monitored-HackTheBox 信息搜集 nmap扫描一下端口 nmap -sV -sC -v --min-rate 1000 10.10.11.248扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0) 80/tcp open http Apache httpd …

视觉位置识别与多模态导航规划

前言 机器人感知决策是机器人移动的前提,机器人需要对周围环境实现理解,而周围环境通常由静态环境与动态环境构成。机器人在初始状态或者重启时需要确定当前所处的位置,然后根据用户的指令或意图,开展相应移动或抓取操作。通过视觉…

【分治】Leetcode 排序数组

题目讲解 912. 排序数组 算法讲解 我们这里使用三指针&#xff0c;将数组分成三块&#xff1a;<key 和 key 和 >key,如果当前指针指向的数字<key&#xff0c;我们就swap(nums[left]), nums[i] 。如果当前的数字key &#xff0c;就让i。如果当前的数字>key&…

geolife笔记/python笔记:trackintel.io.read_geolife

此函数解析 geolife_path 目录中可用的所有 geolife 数据 trackintel.io.read_geolife(geolife_path, print_progressFalse) 参数&#xff1a; geolife_path (str) 包含 geolife 数据的目录路径 print_progress (Bool, 默认为 False)如果设置为 True&#xff0c;则显示每个…

退出 beeline

退出 beeline 的命令是 !quit或 !exit 或者&#xff0c;直接来 Ctrl-D 我们下期见&#xff0c;拜拜&#xff01;

Linux 内核复合页(compound page)原理分析

源码基于&#xff1a;Linux5.15 约定&#xff1a; 芯片架构&#xff1a;ARM64内存架构&#xff1a;UMACONFIG_ARM64_VA_BITS&#xff1a;39CONFIG_ARM64_PAGE_SHIFT&#xff1a;12CONFIG_PGTABLE_LEVELS &#xff1a;3 1. 简介 复合页(Compound Page) 只是将两个或更多物理上…

【笔试强训】DFS、优先队列、滑动窗口笔试题目!

文章目录 1. 单词搜索2. 除 2 操作3. dd 爱框框 1. 单词搜索 题目链接 解题思路&#xff1a; DFS (深度优先遍历)&#xff0c;用一个 pos 记录要匹配单词 word 的位置&#xff0c;每次与 pos 进行匹配判断&#xff08;这样做的好处是不用把答案存下来&#xff09; 注意细节…

算法:期望场景;鲁棒优化

部分代码 for i1:T stst[D_DGk(i)*min_P_DG<P_DGk(i)<D_DGk(i)*max_P_DG]; end for i2:T indicatorD_DGk(i)-D_DGk(i-1); rangei:min(T,iT_up-1); st st[D_DGk(range)>indicator]; end for i2:T indicatorD_DGk(i-1)-D_DGk(i); rangei:min(T…

时序分解 | Matlab实现TVF-EMD时变滤波器的经验模态分解信号分量可视化

时序分解 | Matlab实现TVF-EMD时变滤波器的经验模态分解信号分量可视化 目录 时序分解 | Matlab实现TVF-EMD时变滤波器的经验模态分解信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现TVF-EMD(时变滤波器的经验模态分解)可直接替换 Matlab语言 1.…

IDEA远程调试debug

IDEA远程调试debug jar包启动脚本配置IDEA配置 通俗的说&#xff1a;本地有代码&#xff0c;服务器项目出现问题&#xff0c;环境的中间件配置不同&#xff0c;用idea远程调试&#xff0c;能快速定位问题&#xff0c;解决问题。 jar包启动脚本配置 jdk5-8写法 java -Xdebug -…