js中的call和apply

news2024/11/16 17:56:06

js中的call和apply

  • 1.call()可以调用某一函数
  • 2.call()可以这个函数的this指向
  • 3.call()也可以接受参数

每次看到js中的call方法,都是懵逼的要去查查百度,自己研究记录下

1.call()可以调用某一函数

          testCall() {
            let person = {
                fullName: function () {
                    console.log(this)
                    console.log(this,this.firstName + " " + this.lastName) 
                }
            }
            person.fullName()  //打印的结果是undefined undefined,this的指向的是person对象
            person.fullName.call()  //打印会报错,这里的this是undefined
        }

可以看出,person.fullName()和person.fullName.call()都执行了fullName方法,只是结果不同

2.call()可以这个函数的this指向

       testCall() {
            let person = {
                fullName: function () {
                    console.log(this)
                    console.log(this,this.firstName + " " + this.lastName) 
                }
            }
            let person1 = {
                firstName: "小",
                lastName: "小怪"
            }
   person.fullName()  //打印的结果是undefined undefined,this的指向的是person对象
  person.fullName.call(person1);  //打印结果是"小 小怪",this指向的是person1对象
        }

看出了,call能改变this的指向

3.call()也可以接受参数

        testCall() {
            console.log(window)
            let person = {
                fullName: function (hello,age) {
                    console.log(this)
                    console.log(this,this.firstName + " " + this.lastName + hello+age) 
                }
            }
            let person1 = {
                firstName: "小",
                lastName: "小怪"
            }
 person.fullName()  //打印的结果是undefined undefinedundefinedundefined,this的指向的是person对象
 person.fullName.call(person1,'你好呀',18);  //打印结果是"小 小怪你好呀18",this指向的是person1对象
        }

同理的,apply的效果和call的作用是一一样的,唯一的区别就是传参数的话方式不同,call是一个个传,apply是传的数组
在这里插入图片描述

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

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

相关文章

webpack基本使用

1、内置模块path (1)path模块用于对路径和文件进行处理,提供了很多好用的方法。 (2)我们知道在Mac OS、Linux和window上的路径时不一样的 window上会使用 \或者 \\ 来作为文件路径的分隔符,当然目前也支…

SpringBoot+VUE前后端分离项目学习笔记 - 【17 SpringBoot文件上传下载功能 MD5实现文件唯一标识】

Sql 数据库新建sys_file用来保存上传文件信息 CREATE TABLE sys_file (id int(11) NOT NULL AUTO_INCREMENT COMMENT id,name varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 文件名称,type varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 文…

STM32——I2C通信

文章目录I2C通信使用I2C通信的硬件设备硬件电路I2C时序基本单元起始与终止发送接收发送应答与接收应答I2C时序指定地址写当前地址读指定地址读连续读与写MPU6050简介MPU6050参数硬件电路MPU6050框图系统时钟MPU6050的中断源寄存器映像软件I2C读写MPU6050电路设计关键代码I2C通信…

C语言-扫雷

文章目录完整扫雷1. 说明2. 思路3. 各个功能实现3.1 雷盘初始化与打印1)雷盘定义2) 随机布置雷3.2 玩家排查雷1) 获取坐标周围雷数2) 递归展开3)胜负判断3) 显示雷位置4. 游戏试玩5. 游戏完整代码game.htes…

【定时任务】---- xxl-job、@Scheduled

一、Scheduled注解实现的定时任务 要实现计划任务,首先通过在配置类注解EnableScheduling来开启对计划任务的支持,然后在要执行计划任务的方法上注解Scheduled,声明这是一个计划任务。 在Spring Boot 的入口类 XXXApplication 中,必然会有S…

东南大学洪伟教授评述:毫米波与太赫兹技术

今日推荐文章作者为东南大学毫米波国家重点实验室主任、IEEE Fellow 著名毫米波专家洪伟教授,本文选自《毫米波与太赫兹技术》,发表于《中国科学: 信息科学》2016 年第46卷第8 期——《信息科学与技术若干前沿问题评述专刊》。 本文概要介绍了毫米波与太…

CSS知识点精学6-精灵图、背景图片大小、文字阴影、盒子阴影、过渡

目录 一.精灵图 1.精灵图的介绍 2.精灵图的使用步骤 二.背景图片大小 三.文字阴影 四.盒子阴影 五.过渡 一.精灵图 1.精灵图的介绍 场景:项目中将多张小图片,合成一张大图片,这张图片称之为精灵图 优点:减少服务器发送次…

clickhouse入门学习以及数据迁移

本文主要介绍如何入门clickhouse,以及将mariadb数据迁移过来,最后介绍当前几种的训练的示例数据库集。1、中文教程:中文教程:中文教程有了教程,需要有数据可以训练,教程提供示例数据集,但是数据…

Java基础之《netty(22)—Protobuf》

一、Protobuf基本介绍 1、Protobuf是Google发布的开源项目,全称Google Protobuf Buffers,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或RPC数据交换格式。 2、参考文档 htt…

粒子系统-主模块参数

目录 Duration Looping Prewarm Start Lifttime Start Speed Start Size 3D Start Rotation Start Rotation Start color Simulation Space Max Particles Duration 粒子系统的工作时长,如果不勾选Looping的话,在5秒后就再也没有粒子发射 L…

HTTPS头部的Referer字段

目录 Referrer-policy 如何设置referer 盗链 防盗链的工作原理 绕过图片防盗链 利用https网站盗链http资源网站,refer不会发送 利用iframe伪造请求referer 利用XMLHttpRequest Referer请求头包含了当前请求页面的来源页面的地址,即表示当前页面是…

【Proteus仿真】【STM32单片机】智能窗帘控制系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、按键模块、HC05蓝牙、DHT11温湿度、PCF8591 ADC模块、光线传感器、28BYJ48步进电机等。 主要功能: 系统运行后&…

链表算法-回文结构、两个链表公共节点

最近一直在刷算法,以前没有重视这块,偶然巧合下,想到了某几次的面试,虽然没有以这个为主,但是也都有问过算法的题,因为没有这方面的积累,所以心底里一直抗拒,最近也有时间&#xff0…

git第n次学习笔记

git工作流程git四个工作区域Workspace:工作区,就是你平时存放项目代码的地方Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息Repository:仓库区&…

CDGA|想做好数据安全,数据治理是核心

在数字化转型渐进成熟下,企业加强数据治理,保障数据安全,为数字经济持续发展筑牢安全屏障,是时代发展的客观需要。 首先,整个安全能力是在应用内部的,我们对数据流的精确感知和管控,能做到和应用…

【七】Netty JBoss Marshallin 编解码

Netty JBoss Marshallin 编解码介绍Marshallin 开发环境maven 依赖业务场景模拟流程图代码展示订购采购消息 POJO 类订购应答消息 POJO 类SubscribeReqServer 服务端启动类MarshallingCodeCFactory服务端业务处理类 SubscribeServerHandler客户端启动类 SubscribeClient客户端 …

leetcode.2471 逐层排序二叉树所需的最少操作数目 - bfs + 置换环算法 + 并查集

2471. 逐层排序二叉树所需的最少操作数目 目录 1、循环标记置换环 2、并查集置换环 思路: 总操作数目 每一层最小操作数之和 每一层元素个数 - 置换环数 先用bfs对树进行层序遍历,一层一层地计算 置换环:对每个节点,将其指向…

全国首例:新一代仿生型人工心脏在福建成功植入

此时此刻,福建福清吴先生的体内正搏动着一颗新款的“人工心脏”。心脏是生命的中枢,一旦衰竭生命也将终止,人工心脏为这些心衰患者带来了新的希望。福建医科大学附属协和医院心外科团队,将科幻电影里装着人工心脏的“钢铁侠”变成…

六派巨量转移技术概述

1. 巨量转移技术概述 与OLED显示技术不同,无机LED无法在玻璃或其他大尺寸衬底进行大面积的制作,因此需要在半导体衬底上进行制作,然后再转移到驱动背板上。当前LED所采用的衬底一般为蓝宝石,但蓝宝石与外延层之间的晶格和热膨胀系…

国产技术迎来突破,光量子芯片横空出世,中文编程也有好消息

国外光刻机不再牛,随着这项技术问世,我们摆脱芯片卡脖子困境成为可能! 欧美技术如此领先,我们凭什么实现弯道超车?就凭国内领先全球的量子技术,还有惊艳问世的光量子芯片,让欧美震惊不已&#x…