网安笔记2

一、实例对象

1.对象是单个实物的抽象,是一个容器,封装了属性和方法

2.构造函数,构造函数就是一个普通的函数,但具有自己的特征和用法。

var Vehicle = function () {
  this.price = 1000;
};
        上面代码中,Vehicle就是构造函数。为了与普通函数区别,构造函数名字的第一个字母通常大写。

构造函数的特点有两个。

函数体内部使用了this关键字,代表了所要生成的对象实例。

生成对象的时候,必须使用new命令

二、new命令
运行环境:node.js

var Vehicle = function () {
  this.price = 1000;
};
var v = new Vehicle();
new命令的原理:

使用new命令时,它后面的函数依次执行下面的步骤。

创建一个空对象,作为将要返回的对象实例。

将这个空对象的原型,指向构造函数的prototype属性。

将这个空对象赋值给函数内部的this关键字。

开始执行构造函数内部的代码。

三、this关键字
JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

在方法中,this 表示该方法所属的对象。
如果单独使用,this 表示全局对象。
在函数中,this 表示全局对象。
在函数中,在严格模式下,this 是未定义的(undefined)。
在事件中,this 表示接收事件的元素。
类似 call() 和 apply() 方法可以将 this 引用到任何对象。
在对象方法中, this 指向调用它所在方法的对象。

在上面一个实例中,this 表示 person 对象。

fullName 方法所属的对象就是 person。

var person = {
  firstName: "John",
  lastName : "Doe",
  id       : 5566,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};
 
单独使用 this,则它指向全局(Global)对象。

在浏览器中,window 就是该全局对象为 [object Window]:

var x = this;
严格模式下,如果单独使用,this 也是指向全局(Global)对象。

"use strict";
var x = this;
在函数中,函数的所属者默认绑定到 this 上。

在浏览器中,window 就是该全局对象为 [object Window]:

function myFunction() {
  return this;
}
严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。

"use strict";
function myFunction() {
  return this;
}
在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素:

<button οnclick="this.style.display='none'">
点我后我就消失了
</button>
对象方法中绑定,下面实例中,this 是 person 对象,person 对象是函数的所有者:

var person = {
  firstName  : "John",
  lastName   : "Doe",
  id         : 5566,
  myFunction : function() {
    return this;
  }
};
显示函数绑定,在 JavaScript 中函数也是对象,对象则有方法,apply 和 call 就是函数对象的方法。这两个方法异常强大,他们允许切换函数执行的上下文环境(context),即 this 绑定的对象。

在下面实例中,当我们使用 person2 作为参数来调用 person1.fullName 方法时, this 将指向 person2, 即便它是 person1 的方法

四、箭头函数中的this
箭头函数中的this是定义函数时绑定的,而不是在执行函数时绑定。若箭头函数在简单对象中,由于简单对象没有执行上下文,所以this指向上层的执行上下文;若箭头函数在函数、类等有执行上下文的环境中,则this指向当前函数、类。

在全局中:

 window.name = 'window'
  let demo1 = () => {
    console.log(this.name);
  }
  demo1() // window
  let a = {
    name: 'a',
    speak: demo1
  }
  a.speak() // window
demo1定义所在的作用域是全局,而全局的this指向window,所以无论是直接调用(使用window调用)还是用对象a调用,最终this都是window

在对象属性中:

  window.name = 'window'
  let demo2 = {
    name: 'demo2',
    speak1: () => {
      console.log(this.name);
    }
  }
  let b = {
    name: 'b',
    speak2: demo2.speak1
  }
  demo2.speak1() // window
  b.speak2() // window
箭头函数speak1定义在对象demo2中,但是对象demo2的this仍然指向window,所以无论是demo2调用还是b调用,最终this都是指向window

在类中:

  class Person {
    speak1 = () => {
      console.log(this.name);
    }
  }
 
  let c = new Person()
  c.name = 'c'
  let d = {
    name: 'd'
  }
  c.speak1() // c
  d.speak1 = c.speak1
  d.speak1() // c
箭头函数speak1定义在类Person中,Person的this指向它的实例化对象,即实例对象c。所以无论是使用c调用还是d调用,最终this都指向c

五、定时器(Timer)
        setTimeout()用于在指定的毫秒数后调用函数或计算表达式
        setInterval()在播放动画的时,每隔一定时间就调用函数,方法或对象
var timerId = setTimeout(func|code, delay)
 上面代码中,setTimeout函数接受两个参数,第一个参数func|code是将要推迟执行的函数名或者一段代码,第二个参数delay是推迟执行的毫秒数。

<input type="button" οnclick="clearInterval(timer)" value="stop">
 
<script>
  var i = 1
  var timer = setInterval(function() { 
    console.log(2);
  }, 1000);
</script>
上面代码表示每隔1000毫秒就输出一个2,直到用户点击了停止按钮。

六、JS宏任务和微任务


       1.什么是宏任务和微任务

        微任务(microtask)和宏任务(macrotask)。 微任务是指在当前任务执行结束后立即执行的任务,它可以看作是在当前任务的“尾巴”添加的任务。常见的微任务包括 Promise 回调和 process.nextTick。 宏任务是指需要排队等待 JavaScript 引擎空闲时才能执行的任务。常见的宏任务包括 setTimeout、setInterval、I/O 操作、DOM 事件等。 JavaScript 引擎会先执行当前任务中的所有微任务,然后再执行宏任务队列中的第一个任务。这个过程会不断重复,直到宏任务队列中的任务被全部执行完毕。

        2.执行顺序

首先执行当前代码(同步任务),直到遇到第一个宏任务或微任务。
如果遇到微任务,则将它添加到微任务队列中,继续执行同步任务。
如果遇到宏任务,则将它添加到宏任务队列中,继续执行同步任务。
当前任务执行完毕后,JavaScript 引擎会先执行所有微任务队列中的任务,直到微任务队列为空。
然后执行宏任务队列中的第一个任务,直到宏任务队列为空。
 

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

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

相关文章

前端(Electron Nodejs)如何读取本地配置文件

使用electron封装了前端界面之后&#xff0c;最终打包为一个客户端&#xff08;exe&#xff09;。但是&#xff0c;最近项目组内做CS&#xff08;c开发&#xff09;的&#xff0c;想把所有的配置都放进安装目录的配置文件中&#xff08;比如config.json&#xff09;。这做法&am…

M 芯片的 macos 系统安装虚拟机 centos7 网络配置

centos 安装之前把网络配置配好或者是把网线插好 第一步找到这个 第二步打开网络适配器 选择图中所指位置 设置好之后 开机启动 centos 第三步 开机以后 编写网卡文件保存 重启网卡就可以了&#xff0c;如果重启网卡不管用&#xff0c;则重启虚拟机即可 “ ifcfg-ens160 ” 这…

黑苹果如何在macOS Sonoma中驱动博通网卡

准备资源&#xff08;百度&#xff1a;黑果魏叔 下载&#xff09; 资源包中包含&#xff1a;AirportBrcmFixup.kext/IOSkywalkFamily.kext/IO80211FamilyLegacy.kext/OpenCore-Patcher 使用方法&#xff1a; 1.将 csr-active-config 设置为 03080000 全选代码 复制 2.在 …

c++数据锁链

题目描述&#xff1a; 创建一个结构体为Node&#xff0c;具有value , next 两个属性&#xff1b; value为整型&#xff0c;用来储存结构体数值&#xff1b; next为Node类型指针&#xff0c;用来指向下一组数据地址&#xff1b; 第1组数据value 5&#xff1b; 第2组数据value …

php查询数据(日期查询)和fastadmin的日期查询

当前月查询 要在 PHP 中查询数据库中当前月份的数据&#xff0c;需要使用 SQL 查询语句来筛选出符合条件的数据。首先&#xff0c;确保数据库中有一个日期或时间类型的字段用于存储记录的日期信息。 假设你的数据库表名为 my_table&#xff0c;其中有一个名为 date_column 的…

MATLAB RANSAC平面拟合 (29)

MATLAB RANSAC平面拟合 (29) 一、算法简介二、函数介绍三、算法实现四、效果展示一、算法简介 将一个平面与一个从内点到平面的最大允许距离的点云相匹配。该函数返回描述平面的几何模型。该函数采用 M- 估计量样本一致性(MSAC)算法求解平面。MSAC 算法是随机样本一致性(RAN…

【C++】STL——list的介绍和使用、list增删查改函数的介绍和使用、push_back、pop_back

文章目录 1.list的使用2.list的增删查改函数&#xff08;1&#xff09;push_front 在list首元素前插入值为val的元素&#xff08;2&#xff09;pop_front 删除list中第一个元素&#xff08;3&#xff09;push_back 在list尾部插入值为val的元素&#xff08;4&#xff09;pop_ba…

常用的一些蓝图(持续更新)

文章目录 ADEIPS A Apply Damage: 对指定的actor应用伤害。 Add Mapping Context: 添加控制映射上下文。 D Do Once: 仅在第一次命中节点时触发&#xff0c;但可以重置。 Delay: 延迟执行。 Destroy Actor: 销毁指定的actor。 E Enhanced Input Local Player Subsystem: 从玩家…

Elasticsearch 分片策略

文章目录 分片索引设置分片获取索引分片信息示例 分片分配集群级分片分配索引级分片分配索引级分片筛选每个节点的分片总数索引恢复优先级节点掉线时延时分配 分片 和数据库中的表空间类似&#xff0c;不过分片是为每个索引设置&#xff0c;一个索引可以有多个分片&#xff0c…

TCP三次握手/四次挥手

三次握手 三次握手过程 TCP服务器进程先创建传输控制块TCB&#xff0c;时刻准备接受客户进程的连接请求&#xff0c;此时服务器就进入了LISTEN&#xff08;监听&#xff09;状态&#xff1b;TCP客户进程也是先创建传输控制块TCB&#xff0c;然后向服务器发出连接请求报文&…

【QT 网络云盘客户端】——登录界面功能的实现

目录 1.注册账号 2.服务器ip地址和端口号设置 3. 登录功能 4.读取配置文件 5.显示主界面 1.注册账号 1.点击注册页面&#xff0c;将数据 输入 到 用户名&#xff0c;昵称&#xff0c;密码&#xff0c;确认密码&#xff0c;手机&#xff0c;邮箱 的输入框中&#xff0c; 点…

【C语言学习——————动态内存管理】

文章目录 一、什么是动态内存管理二、动态内存函数的介绍 1.malloc函数的介绍2.calloc函数的介绍3.realloc函数的介绍三、free函数的介绍 一.什么是动态内存管理 我们知道数据都是在内存中进行储存的&#xff0c;但是如果我们需要调用内存&#xff0c;我们可以通过定义一个变量…

HTML <p> 标签

实例 以下代码标记了一个段落&#xff1a; <p>This is some text in a very short paragraph</p> &#xff08;在页面下部&#xff0c;您可以找到更多实例。&#xff09; 浏览器支持 元素ChromeIEFirefoxSafariOpera<p>YesYesYesYesYes 所有主流浏览器都…

网络安全系统中的守护者:如何借助威胁情报 (TI) 提高安全性

在这篇哈巴尔网站上的推文中&#xff0c;我们将解释 TI 缩写背后的含义、为什么需要它、Positive Technologies 收集哪些网络威胁数据以及如何帮助企业预防网络威胁。我们将以四种情况为例&#xff0c;说明公司如何使用 PT Threat Intelligence Feeds 来发现恶意活动并预防攻击…

TCP四次握手为什么客户端等待的时间是2MSL

目录 什么是MSL从第三次握手开始分析总结 什么是MSL MSL是Maximum Segment Lifetime英文的缩写&#xff0c;中文可以译为“报文最大生存时间”&#xff0c;他是任何报文在网络上存在的最长时间&#xff0c;超过这个时间报文将被丢弃。 从第三次握手开始分析 第三次握手服务端…

uniapp跳转到外部链接

// 一、先配置页面 {"path": "pages/webview/webview","style": {"navigationBarTitleText": ""} } // 二、编写页面 <template><web-view :src"src" /> </template><script> export def…

vue3+ts+elementui-plus二次封装树形表格

复制粘贴即可&#xff1a; 一、定义table组件 <template><div classmain><div><el-table ref"multipleTableRef" :height"height" :default-expand-all"isExpend" :data"treeTableData"style"width: 100%…

七、用 ChatGPT 修改简历

目录 一、实验介绍 二、背景 三、小张的简历 四、修改简历的技能 五、修改项目经验 5.1 项目经验

从官网认识 JDK,JRE,JVM 三者的关系

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ JVM 是一些大厂面试必问点&#xff0c;要想解决 OOM、性能调优方面的问题&#xff0c;掌握 JVM 知识必不可少&#xff0c;从今天开始&#xff0c;将为大家介绍 JVM 的常用知…

[sqoop]将hive查询后的数据导入到MySQL

一、知识点 export:将Hive的表导入到mysql叫导出 搜了很多&#xff0c;发现sqoop在hive导出到mysql时 1&#xff09;不支持where参数对数据进行过滤。 2&#xff09;不支持指定hive表的方式导出&#xff0c;只能指定Hive目录进行导出。 二、操作 1、在MySQL中建表 creat…