首页 > 其他分享 >如何确定 this 指向?改变 this 指向的方式有哪些?

如何确定 this 指向?改变 this 指向的方式有哪些?

时间:2022-11-05 14:45:06浏览次数:62  
标签:指向 哪些 bind 李某 确定 user var fn

 this 指向:
1. 全局上下文(函数外)
无论是否为严格模式,均指向全局对象。注意:严格模式下全局对象为undifined
2. 函数上下文(函数内)
默认的,指向函数的调用对象,且是最直接的调用对象:
简单调用,指向全局对象注意:严格模式下全局对象为undifined,某些浏览器未实现此标准也可能会是window

改变this指向的方式:
1. 第一种: new关键字改变this指向

//构造函数版this
function Fn(){
    this.user = "李某";
}
var a = new Fn();
console.log(a.user); //李某
/*----------------------------------------*/
2. 第二种: call()
// 把b添加到第一个参数的环境中,简单来说,this就会指向那个对象
var a = {
    user:"李某",
    fn:function(){
        console.log(this.user); //李某
    }
}
var b = a.fn;
b.call(a);  //若不用call,则b()执行后this指的是Window对象
/*----------------------------------------*/
3. 第三种:apply()
// apply方法和call方法有些相似,它也可以改变this的指向,也可以有多个参数,但是不同的是,第二个参数必须是一个数组
var a = {
    user:"李某",
    fn:function(){
        console.log(this.user); //李某
    }
}
var b = a.fn;
b.apply(a);
/*----------------------------------------*/
4. 第四种:bind()
// bind方法返回的是一个修改过后的函数,
// bind也可以有多个参数,并且参数可以执行的时候再次添加,但是要注意的是,参数是按照形参的顺序进行的。
var a = {
    user:"李某",
    fn:function(){
        console.log(this.user); //李某
    }
}
var b = a.fn;
var c = b.bind(a);
c();

标签:指向,哪些,bind,李某,确定,user,var,fn
From: https://www.cnblogs.com/ltwlh/p/16860151.html

相关文章

  • 低代码有哪些典型应用场景?
    低代码的应用场景取决于低代码平台的自身的架构体系与功能,目前大多数低代码平台还是以B端为主,即提供浏览器模式的方式提供简单的基于模块预定制、存储过程预定制之类预先......
  • 电子产品安全认证有哪些?​
    ​CCC认证—中国强制认证中国强制性产品认证于2002年5月1日起实施,认证标志的名称为“中国强制认证”(英文ChinaCompulsoryCertification的缩写“CCC”)。对列入国家质量......
  • linux有哪些文件类型
    七种文件类型在Linux中一切都是文件,但文件都得有类型。那如何查看文件是什么类型了?在Linux常见的文件类型有7种,分别如下所示:文件属性文件类型-常规文件,即file......
  • 云服务器的优点有哪些
    1、多地域性覆盖云服务器的所在地域性广,丰富的地域性为客户所拥有的业务保驾护航,三大地域覆盖全国内的业务需求。对于境外的也满足国外的需求。2、稳定可靠基于成熟的虚......
  • JS 探索 this 指向问题
    1.扑朔迷离的this从表面来看,this总能通过各种变通的方式得到意想不到的结果既然是“意想不到”,就说明对“各种变通的方式”不太了解2.那么我们来看看“各种变......
  • 自动化软件测试知识分享,上海权威软件检测公司有哪些?
    一、什么是自动化测试?自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一......
  • vue组件通信方式有哪些?
    vue组件通信方式一、props(父向子传值----自定义属性)/$emit(子向父传值-----自定义事件)父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信......
  • 恒创科技:虚拟服务器的优缺点有哪些?
    服务器虚拟化的概念是使用物理服务器,并在虚拟化软件的帮助下,对服务器进行分区或分割,使其显示为多个“虚拟服务器”,每个“虚拟服务器”都可以运行它们的操作系统副本。为......
  • 国内云服务器厂商阿里云,腾讯云,华为云都有哪些优势核特点?
    从Canalys发布的最新报告显示,与全球云服务市场33%的高增长势头相比,中国市场增长明显放缓,首次跌破20%。中国大陆的云基础设施服务支出同比增长11%。1、云计算市场占比分......
  • 传奇开服教程:传奇开服在哪些网站打广告?传奇发布站打广告技巧
    ​开传奇sf,成本最高的就是广告费用了,为了让服人气更高,主播和发布站相信你们都已经尝试了,上人效果如何你们比我更清楚,为什么别的GM开的服人气那么高,而你的服玩家屈指可数呢?今......