当前位置: 首页 > news >正文

安全渗透重点内容

this是js中的一个关键字,在不同的场合使用,this的值会发生变化,下面我将详细的介绍this在函数中的各种指向。

在方法中,this表示该方法所属的对象。
如果单独使用,this表示全局对象。
在函数中,this表示全局对象。
在函数的严格模式下,this是未定义的(undefined)。
在事件中,this表示绑定事件的元素对象。
使用new 构造函数创建对象,this就是实例对象


1.作为函数,它的this指向是全局变量。作为方法,它是window对象的方法
 function fn(){
    var a=123
    console.log(this.a)
    console.log(this)
}
fn()
2.作为对象内部this当然就是指向对象obj
var obj={
    var a='123'
    fn:function(){
        console.log(this.a)
        console.log(this)
}
}
obj.fn()

3.new一个实例对象b,等于把函数Fn复制了一份放在对象b对象里面,this的指向的就是b对象。


function Fn(){
    this.a='123'
}
var b=new Fn()
console.log(b.a)

4.返回值是一个对象时,this指向的就是返回的对象,如果返回值不是一个对象,那么this指向函数的实例

//构造函数中有返回值的情况。
function fn(){
    this.a=123
    return {}
}
var b=new fn()
console.log(b.a)
 

function fn(){
    this.a=123
    return 1
}
var b=new fn()
console.log(b.a)
5.返回值是null的特殊情况
function fn(){
    this.a=123
    return null
}
var b=new fn()
console.log(b.a)


JavaScript异步任务的微任务和宏任务

宏任务通常指与浏览器渲染相关的任务

常用的宏任务有:SetTimeout、SetInterval等等

  SetTimeout:延时器用法

  let blue = '我是什么颜色'
  let outTimer = setTimeout(function() {
    console.log(blue) // 两秒种后控制台打印
    clearTimeout(outTimer) // 关闭延时器
  }, 2000)

SetInterval:定时器用法

  let money = 1
  let interTimer = setInterval(function() {
    console.log(k++) // 若不关闭,指定时间无限循环执行
    if (k >= 5) clearInterval(interTimer) 
  }, 2000)

微任务一般是指不与主线程任务同步执行的任务,常用微任务:Promise.then(经常用到的典型例子)、Object.observe、MutationObserver等

Promise 的创建

  let PUA = function(val) {
    return new Promise((resolve, reject) => {
      if (val === 1) resolve('成功')
      else reject('失败')
    })
  }
  console.log(PUA(1)) // 值与 if 匹配,会返回成功

Promise 的 .then() 方法

  let PUA = function(val) {
    return new Promise((resolve, reject) => {
      if (val === 1) resolve('成功')
      else reject('失败')
    })
  }
  PUA(1).then((val) => {
    console.log(val)
    console.log('成功后打印')
  })

执行顺序是:同步任务 ===> 微任务 ===> 宏任务

http://www.lryc.cn/news/98881.html

相关文章:

  • 【触觉智能Purple Pi OH开发板体验】开箱体验:开源主板Purple Pi RK3566 上手指北
  • flink1.16使用消费/生产kafka之DataStream
  • 【多任务编程-线程通信】
  • K8S暴露pod内多个端口
  • Python 列表
  • Rabbitmq的安装与使用(Linux版)
  • Kubernetes对象深入学习之四:对象属性编码实战
  • 深度学习入门教程(2):使用预训练模型来文字生成图片TextToImageGenerationWithNetwork
  • ORA-38760: This database instance failed to turn on flashback database
  • 避免低级错误:深入解析Java的ConcurrentModificationException异常
  • 7.28
  • java线程中的常见方法(详解)
  • 线程池参数配置
  • Spread for Winform 16.2.20231.0 (SP2) Crack
  • Go程序结构
  • JAVA面试总结-Redis篇章(四)——双写一致性
  • 赋能医院数字化转型,医院拍摄VR全景很有必要
  • Vue3项目中没有配置 TypeScript 支持,使用 TypeScript 语法
  • 数据可视化大屏拼接屏开发实录:屏幕分辨率测试工具
  • 每日一题7.28 209
  • Python + Playwright 无头浏览器Chrome找不到元素
  • C++信号量与共享内存实现进程间通信
  • [Tools: Camera Conventions] NeRF中的相机矩阵估计
  • 【sgUpload】自定义上传组件,支持上传文件夹及其子文件夹文件、批量上传,批量上传会有右下角上传托盘出现,支持本地上传图片转换为Base64image
  • Kafka 实时处理Stream与Batch的对比分析
  • Andriod开发性能优化实践
  • linux环境安装mysql数据库
  • 【深度学习中常见的优化器总结】SGD+Adagrad+RMSprop+Adam优化算法总结及代码实现
  • 山东大学软件学院考试回忆——大二上
  • 【Express.js】异常分类和日志分级