[确定不进来?]this,call,apply的作用与区别

华为交换机与思科/华三设备LACP对接实战:手把手教你配置链路聚合 本文详细解析了华为交换机与思科、华三设备间的LACP链路聚合配置实战,涵盖核心原理、配置步骤及排错技巧。通过对比不同厂商的实现差异,提供可落地的跨厂商对接方案,助力企业网络工程师高效部署高可靠性链路聚合。 阅读详情

在我们学习js的过程中,在this这个地方通常会产生迷糊,下面就让我们来了解一下this的使用吧.

this是一个关键字,正常情况下,用于赋值对象

在不同的程序中,赋值的对象也不同

//看this 代码在哪里写的

//----->全局 this===window

//---->函数 看第二步

//1.是什么函数?

//2.----->如果是function函数

//3.看函数是谁触发的?

//-----> call bind apply this===三个函数的实参一

//new this===new 创建的对象

//---事件函数 this===触发事件的dom元素

//---普通对象触达 this===普通对象

1.在全局作用域下,this指向的是window

2.在构造函数中,this指向的是调用构造函数中的实例对象;如下图

this指向的是Animal{}

3.在对象函数中调用,哪个函数调用对象函数,this就指向那里,                                                           

如下图,this.a指向的是全局中的a,并不是obj中的,因为obj中没有a,所以输出undefined,this.b在obj中存在所以输出指向的222     

  window.a=111;
       let obj={
           b:222,
           fn:function(){
               console.log(this.a);//undefined
               console.log(this.b);//222
           }
       }
        obj.fn();

    4.call和apply  :                                                                              

call和apply都是改变this的指向,借用别人的函数来实现自己的功能

 

区别:call传的是行参的个数,apply传的是形参的arguments数组

call:


        function Person(name,sex,age){
            this.name=name;
            this.sex=sex;
            this.age=age;
        }
        function Student(name,sex,age,tel,grade){
            Person.call(this,name,sex,age);//把Person中的对象给借过来让自己使用; (this)很重要 不要忘记啦!!!
            this.tel=tel;
            this.grade=grade;
        }
        var student=new Student('lk','男','23','110','111');
        console.log(student);

apply                                                                                             

function Wheel(wheelSize,style){
            this.wheelSize=wheelSize;
            this.style=style;
        }
        function Sit(c,sitColor){
              this.c=c;
              this.sitColor=sitColor
        }
        function Model(height,width,len){
            this.height=height;
            this.width=width;
            this.len=len;
        }
        function Car(wheelSize,style,c,sitColor,height,width,len){
                Wheel.apply(this,[wheelSize,style])
                Sit.apply(this,[c,sitColor])
                Model.apply(this,[height,width,len])
        }
        var car=new Car(200,'玛莎','真皮','pink',300,100,4900);
        console.log(car)

//call 需要把实参按照形参的个数传进去

//apply 需要传一个arguments;

有不同的见解可以留言讨论!!!

                                                                                                                           

                                                                                         

论文阅读:2024 ACM CCS “Do Anything Now”: Characterizing and Evaluating In-The-Wild Jailbreak Prompts on 大语言模型(LLMs)的滥用问题引起了公众和大语言模型供应商的高度关注。有一种特殊的对抗性提示,叫做越狱提示,它已成为绕过防护措施、让大语言模型生成有害内容的主要攻击手段。在这篇论文中,作者使用新框架JailbreakHub,对2022年12月至2023年12月期间的1405个越狱提示进行了全面分析。作者识别出131个越狱提示社区,发现了越狱提示的独特特征以及主要攻击策略,比如提示注入和权限提升。 阅读详情

相关推荐

Delphi开发者必备:CEF4Delphi跨平台浏览器嵌入实战指南(含Lazarus适配)

本文详细介绍了Delphi开发者如何利用CEF4Delphi实现跨平台浏览器嵌入,包括环境配置、Lazarus适配、ARM架构优化及Firemonkey集成等实战技巧。通过Chromium引擎的强大功能,开发者可以轻松为传统桌面应用添加现代浏览器特性,提升多平台开发效率。

weixin_29233333的博客 226

使用 call() 、apply() 和 bind()

目录 1、call() 和 apply() 2、使用 bind() 3、call()、apply() 和 bind() 的区别 1、call() 和 apply() call() 和 apply() 是 Function 对象的原型方法,它们能够将特定函数当作一个方法绑定到指定对象上并进行调用。具体用法如下: function.call(thisobj,...args); funct...

Yingjieweb 的技术博客 375

基于紫光同创FPGA的adf网表文件使用和黑匣子设置

这个时候就可以选择将你的网表文件给到他使用,就是相当于把你的功能模块封装成了一个黑匣子一样,只有外部端口,没有内部代码;,在TOP层的子模块声明里面需要加上/*synthesis syn_black_box */进行黑匣子设置,此时子层 adf 文件作为黑盒是不会综合的,在 device map 时会将顶层综合结果与子层 adf 文件合并传递至布局布线阶段;这些都设置完毕后呢,就可以对工程进行编译和综合了,综合完毕后会生成一个.adf的网表文件,我们要使用的就是这个文件;我这里是把两个子模块的添加了哈;

H2061722的博客 964

聊一聊call、apply、bind的区别

我们都知道call apply bind都可以改变函数调用的this指向。那么它们三者有什么区别,什么时候该用哪个呢?我们先直接通过代码实例来了解,后面再借助专业文档来解释。 举个? // 有只猫叫小黑,小黑会吃鱼 const cat = { name: '小黑', eatFish(...args) { c...

weixin_33834679的博客 122

通达信源码-主力建仓-AI投研图灵室出品

AI投研图灵室1:=3*SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)-2*SMA(SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);AI投研图灵室2W:=100-100*(HHV(HIGH,14)-CLOSE)/(HHV(HIGH,14)-LLV(LOW,14));AI投研图灵室3:=SMA(SMA(AI投研图灵室2,3,1),3,1);

qq_57222058的博客 4379

手把手教你用周立功USBCANFD-200U和ZCANPRO软件,从驱动安装到UDS诊断一条龙搞定

本文详细介绍了如何使用周立功USBCANFD-200U硬件和ZCANPRO软件,从驱动安装到UDS诊断的全流程操作指南。涵盖硬件连接、软件配置、CAN通信测试及UDS诊断实战,帮助汽车电子爱好者和工程师快速掌握CAN总线通信技术,实现专业的车辆诊断功能。

weixin_30752699的博客 579

call 和apply的作用与区别

首先先说明它们共同的作用:call和apply都是用来修改函数中this的指向问题; 其次就是它们不同的传参方式:注意上一句话中说他们的作用时有两个关键词 ‘函数’和‘this’,想要修改this的指向,那么必然有一个this修改后的指向,而函数必然后关系到传参问题:call方法可以传给该函数的参数分别作为自己的多个参数,而apply方法必须将传给该函数的参数合并成一个数组作为自己的一个参数...

_陌默 5万+

bind、call、apply 区别

一、bind、call、apply的作用 关于call、apply、bind函数,它们主要用来改变this指向的,在很多框架中常有用到,而且也是面试官喜欢问到的问题:多数会问道三者的区别, 以及手动实现它们。 call的用法 fn.call(thisArg, arg1, arg2, arg3, ...) 调用fn.call时会将fn中的this指向修改为传入的第一个参数thisArg;将后面的参数传入给fn,并立即执行函数fn。 let obj = { name: "xiaoming",

weixin_40856652的博客 2万+

C# 上位机内存泄漏排查指南:3 个工具 + 4 个技巧,从 GC 频繁到稳定运行 720 小时

C# 上位机内存泄漏排查的核心是「先定位泄漏存在,再追溯引用根源,最后修复验证通过「Visual Studio 诊断工具(快速定位)+ dotMemory(深度分析)+ PerfView(生产监控)」三个工具的配合,结合「复现场景、排查静态成员+事件、检查非托管资源、GC 日志验证」四个技巧,可高效解决绝大多数泄漏问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 735

V4L2教程(1):Ubuntu V4L2开发环境搭建与设备探索

欢迎来到V4L2学习指南的第一篇!本文将带你从零开始,在Ubuntu系统上搭建完整的V4L2视频采集开发环境。无论你是想开发视频监控、视频会议还是机器视觉应用,掌握V4L2都是Linux视频开发的必经之路。 **本节学习目标**: - 理解V4L2的基本概念和架构 - 搭建Ubuntu下的V4L2开发环境 - 掌握v4l2-ctl等调试工具的使用 - 学会检测和配置USB摄像头设备

琅嬛福地 417

call()与apply()的作用与区别

1. 概念 每个函数都包含两个非继承而来的方法:apply()和call()。 call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性; 2. 作用 call()方法和apply()方法的作用相同:改变this指向。 3. 区别 他们的区别在于接收参数的方式不同: call():第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。在使用call()方法时,传递给函数的参数必须逐个列举出来。 apply():传

weixin_44090040的博客 1839

【代码版本管理】SVN(Subversion)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对SVN(Subversion)代码版本管理做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 668

call、bind、apply三者的区别

当一个函数作为构造器使用时(通过 new 关键字), 它的 this 值绑定到新创建的那个对象。3、如果你在声明一个变量的时候没有使用var或者let、const(es6),你就是在给全局的this添加或者改变属性值。this改变为obj了,但是绑定的时候立即执行,当触发点击事件的时候执行的是fn的返回值undefined。对于函数中的this的指向问题,有一句话很好用:运行时this永远指向最后调用它的那个对象。bind会把fn中的this预处理为obj,此时fn没有执行,当点击的时候才会把fn执行。

nanxun201314的博客 9156

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

this,bind,call,apply三者之间的区别及作用

this this的指针作用域: 1、在全局中使用this,表示全局的global对象,在浏览器中this指向window对象; 2、当在函数执行环境中使用this时,如果函数没有明显的作为非window对象的属性,而只是定义了函数,不管这个函数是不是定义在另一个函数中,这个函数中的this仍然表示window对象。如果函数显示地作为一个非window对象的属性,那么函数中的this就代表这个对象; 3、当通过new运算符来调用函数时,函数被当做一个构造函数,this指向构造函数创建出来的对象; 4、th

龚珂心的博客 658

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

call、apply和bind的区别

call、apply和bind都是用于改变方法中this指向的。 var x = "window_x"; var obj = { x : "obj_x", fn : function(y){ console.log(this.x + " ; " + y); } } obj.fn(1); //obj_x ; 1 var fn = obj.fn; fn(1);...

yihanzhi的博客 5149

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

call、bind、apply的区别

apply call bind

yujiabao702的博客 855

改变this指向的三种方法,call,apply和bind的区别与联系

this指向(永远指向最后调用它的对象) 一般直接调用函数时,this指向window。 当事件调用函数时,this指向触发该事件的对象。 而当调用对象的方法时,在函数中this指向拥有该方法的对象。 但是 call( ),apply( ) 和 bind( ) 都是Function的方法,所有函数都有这三个方法。 1. 相同点 都用来改变this的指向 2.不同点 接收参数的方式不同 (1...

apple_2021的博客 2461

this以及apply,call,bind之间的区别

关于this对象this对象是在运行时基于函数的执行环境绑定的:在全局环境中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window。------《Javascript高级程序设计》除了书里的解释,再来几个直白的例子:// 定义一个全局变量var type = "全局"; // 定义函数aafu...

我在长安长安 3786

js中的call、apply、bind的作用、应用场景与区别

一、call、apply的作用与应用 每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。首先,apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是Array的实例,也可以是arguments对象。例如: function sum(num1, ...

仰望星空的代码 3402

call/apply/bind作用和区别

答案: 他们都可以改变函数的作用域。 call/apply 可以直接执行该函数,而 bind 不会立刻执行 fucntion.bind(thisArg, arg1, arg2, ...) call/apply 作用类似,都可以改变指针和执行函数,区别在于传参不同,call 需要单个传参,apply 通过数组传参 function.call(thisArg, arg1, arg2, ...) function.apply(thisArg, [arg1, arg2, ...]) .

SpringRolls的博客 2807

JavaScript中call()与apply()的作用与区别?

call()和apply()的主要区别在于传入参数的形式不同,call()接受的是一系列参数,而apply()接受的是一个包含多个参数的数组。除此之外,它们的作用和效果基本一致。总之,call()和apply()是非常有用的方法,它们可以在调用函数时灵活地指定this的指向,并且传入相应的参数。在实际开发中,根据具体的需求选择使用call()或apply()可以帮助我们更好地编写出清晰、灵活的代码。

TianXuab的博客 2291

JavaScript 中 call 和 apply 的用法与区别

📖在JavaScript中,call和apply是两个非常重要的函数方法,它们都用于改变函数执行时的this指向。虽然它们的功能相似,但在使用方式上有一些区别。

李赛赛的专栏 993

call apply bind的作用和区别

1.call apply bind 的作用和区别 作用: 都可以改变函数内部的this指向。 区别点: 1.call和apply会调用函数,并且改变函数内部this指向。 2.call和apply传递的参数不一样,call传递参数arg1,arg2..形式apply必须数组形式[arg] 3.bind不回调用函数,可以改变函数内部this指向。 解析: call方法 改变函数内部this指向 call()方法调用一个对象。简单理解为调用函数的方式,但是它可以改变函数的this指向。 写

XIAXING123的博客 2521

call,apply实现bind以及call和apply的主要作用

call,apply的主要功能: 改变调用他们的函数体内部this的指向:指向第一个参数(为null指向宿主对象:浏览器中就是window对象!) 实现bind的功能 借用其他对象的方法。也就是说可以实现继承(构造函数继承或者构造函数和原型链继承组合式继承或者寄生组合式继承) 区别:参数不一样而已啦~apply只有两个参数,第二个是一个数组或者类数组对象 1. var bana...

LynnWonder 1028

call与apply的作用与区别

function fun(){ alert("我是fun函数"); } fun.apply(); function fun(){ alert(this) } fun(); 函数的形式调用this为windows fun.call(obj) //fun.apply(obj) this为object对象,所以在调用call()和apply(),可以将一个对象指定为第一个参数,此时这个对象将会编程这个函数执行时的this 举个例...

qq_54250695的博客 1593
上一篇: js 城市数据三级联动 [顶][顶][顶]
下一篇: 面试题[JavaScript的作用域与作用域链]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值