前端Call和apply指向函数与arguement

  • 简介
  • 一、call和apply和arguement的作用?
  • 二、使用步骤
    • 1.引入函数
    • 2.读入数据
    • 3.arguement函数方法
  • 总结

简介

call和apply这两个方法都是函数对象的方法,需要通过函数对象交换调用

arguements是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度


提示:以下是本篇文章正文内容,下面案例可供参考

一、call和apply和arguement的作用?

示例:这两个方法都是函数对象的方法,需要通过函数对象交换调用
一.this的情况
1.this在函数调用时,this指向window;
2.this在方法调用时,this指向方法的对象
3.以构造函数调用时,this指向新创建的对象
4.使用call和apply调用时,this是指定的对象

二.当函数调用apply()和call()都会调用函数执行
1.在调用call和apply可以将一个对象指定为第一个参数
2.此时这个对象会成为函数指定的this
3.call可以将实参在对象之后依次传递
4.apply方法将实参封装到数组里统一传递

三.封装实参的对象 argument
arguement是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度
//–在调用函数时,我们所传递的实参都会通过arguement来保存
//–arguement.length可以用来获取实参的长度
//我们即使不定义形参,也可以通过arguement使用实参

二、使用步骤

1.引入函数

 function fun(){alert("我是函数");}var obj={}

2.读入数据

代码如下(示例):

 function fun(){alert("我是函数");}var obj={}fun,call(obj,1,2);fun.apply(obj,[1,2]);

3.arguement函数方法

代码如下(示例):

 <script>function sum(){// 形参console.log(arguments);var sum = 0;for(var i = 0; i < arguments.length; i++){sum += arguments[i];}console.log(sum);}// 实际参数 --- 实参sum(10, 20, 3, 4, 5);function fn(a, b, c, d){console.log(arguments.length);//实参的个数console.log(fn.length);//形参的长度if(fn.length > arguments.length){console.log('形参多了');}else if ( fn.length < arguments.length){console.log('实参多了');}else{console.log('刚好');}}fn(1,2,3,4,5);function demo(a, b){a = 3;
//当形参和实参个数相同时 arguments 中的参数和 形参是一一映射的关系  在数量一直的情况下,变化会保持一致arguments[0] = 1;console.log(a);//1}demo(10, 20);function demo1(z, y, x){// x=10 y=10  z=2y = 10;arguments[0] = 2;x = 4;arguments[2] = 10;console.log(z,y,x);console.log(arguments[0], arguments[1], arguments[2]);}demo1(1, 2, 3);//特殊情况:实参比形参少,在函数的内部,多余的形参则不会和实参对象(arguments)中对应位置的值保持变化一致function demo2(a, b){arguments[0] = 'abc';arguments[1] = 2;b = 3;console.log(a, b);//'abc' 3console.log(arguments[0], arguments[1]);//'abc' 2var newArr = Array.from(arguments);console.log(arguments);console.log(newArr);}demo2(1);</script>

总结

1.call和appl用于调用函数时,改变函数指向的对象
2.call可以将实参在对象之后依次传递
3.apply方法将实参封装到数组里统一传递
4.arguement是一个伪数组,可以获取实参的长度 5.当形参和实参个数相同时 arguments 中的参数和 形参是一一映射的关系 在数量一直的情况下,变化会保持一致

前端call和apply和arguement相关推荐

  1. 一个模仿水滴筹的项目(只是一个半成品)

    记录一下遇到的问题和坑 1.关于mybatis mybatis-generator 无法自动生成字段类型为text的属性 resultmap中需要多个association实体属性 mybatis跨X ...

  2. 前端见微知著JavaScript基础篇:你所不知道的apply, call 和 bind

    在我的职业生涯中,很早就已经开始使用JavaScript进行项目开发了.但是一直都是把重心放在了后端开发方面,前端方面鲜有涉及.所以造成的一个现象就是:目前的前端知识水平,应付一般的项目已然是足够的, ...

  3. 50行javaScript代码实现简单版的 call , apply ,bind 【中级前端面试基础必备】

    在实现自己的call,apply,bind前,需要复习一下this. ###所谓的this其实可以理解成一根指针: 其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象,这 ...

  4. 前端战五渣学JavaScript——call、apply以及bind

    写这篇博客之前,我想先说下今天(2019年3月28日)一直关注的一件事吧(出于凑热闹的心情--尴尬).在昨天,全球最大交友网站Github上悄然出现一个名为996.ICU的文档项目,整个项目没有代码, ...

  5. 前端百题斩【015】——快速手撕call、apply、bind

    写该系列文章的初衷是"让每位前端工程师掌握高频知识点,为工作助力".这是前端百题斩的第15斩,希望朋友们关注公众号"执鸢者",用知识武装自己的头脑. 在百题斩[ ...

  6. 前端学习辑录(3):apply,call,bind方法总结

    目录 apply,call,bind方法总结: 1.apply()方法 2.call()方法 3.bind()方法 总结 apply,call,bind方法总结: 1.apply()方法 apply的 ...

  7. 前端设计模式学习笔记(面向对象JavaScript, this、call和apply, 闭包和高阶函数)...

    JavaScript通过原型委托的方式来实现对象与对象之间的继承. 编程语言可分为两大类:一类是静态类型语言,另一类是动态类型语言 JavaScript是一门动态类型语言 鸭子类型的概念(如果它走起来 ...

  8. 前端学习(2491):refused to apply style from ‘‘ because its MIME type (‘text/html‘) is not a supported sty

    <link type="text/css" rel="stylesheet" href="./main.css"> 加个type ...

  9. 前端学习(1115):call apply bind的区别

最新文章

  1. POJ 2778 DNA Sequence (自动机DP+矩阵快速幂)
  2. 支持向量机SVM原理(一)
  3. arm-linux-gcc 头文件搜索路径,gcc和arm-linux-gcc默认头文件库搜索路径
  4. 腾讯架构师讲解Java接口的继承与抽象类
  5. HAProxy反向代理搭建discuz论坛
  6. Scrapy爬虫框架第五讲(linux环境)【download middleware用法】
  7. 管理感悟:能图像不文字
  8. sql中如何将视图中某一字段相同的数据合并 不同内容的字段相加_Tableau基础如何合并你的数据?理解与逻辑(上)...
  9. .NET微信扫码支付模式二API接口开发测试
  10. VB调用周立功CAN接口卡接口库函数
  11. Spring注解原理详解
  12. HTML5如何把圆分成六等分,CSS八等分圆的实现示例_CSS教程_CSS
  13. 【蓝桥杯单片机进阶强化-01】PCF8591的基本原理与A/D转换应用
  14. Docker官方文档阅读笔记
  15. Java基础篇---练习:类的设计
  16. iPhone中国移动收不到彩信,设置方法?
  17. KONG 之 rate-limiting
  18. [枚举]ACPC:Problem B. The Lion King
  19. 微信小程序,动态改变背景图片
  20. Python学习-操作列表

热门文章

  1. 【工具】JSR-303后端参数校验框架的使用方法及说明
  2. pytorch训练出现nan是什么意思
  3. NVIDAI和ATI显卡比较,细研GPU工作流程
  4. 互联网金融风控模型的设计
  5. 一步一步讲解OkHttp最新源码
  6. Ripro9.0全解密去扩展版修正升级版+两款WP美化包+下载信息美化等插件,新增易支付接口
  7. office 2007
  8. 智能照明控制系统某大楼大厅照明的应用
  9. 第二十四章:如何监控项目的质量和进度
  10. aspx 中轻松实现文件上传