前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >call和apply

call和apply

作者头像
用户3159471
发布2018-09-13 10:24:19
7740
发布2018-09-13 10:24:19
举报
文章被收录于专栏:web前端-web前端-

首先个人感觉call和apply还是挺神奇的,简简单单就改变了this的作用域,下面我们来共同学习一下

1.call和apply的语法(改变this的作用域,有点像冒充的感觉,例子如下)

代码语言:javascript
复制
function.apply(thisObj,[“参数一”,"参数二"......]  <script type="text/javascript">
代码语言:javascript
复制
      function People(name,skill){
          this.name=name;
          this.skill=skill;
          this.paly=function(){
              alert( this.name+"使出了"+this.skill)
          }
      }
      var people1=new People("欧阳修","蛤蟆功");
      var person=new Object();//重新创建了一个对象
      People.apply(person ,["孙悟空","七十二变"]);//
这步改变了this的作用域,通俗的理解就是person对象冒充了People对象,
然后使用了People对象中的属性和方法
      people1.paly();
      person.paly()

  </script>
//弹出结果:
代码语言:javascript
复制
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);  <script type="text/javascript">
了解:
  • 调用call的对象必须是个函数function
  • call的第一个参数将会是function改变上下文后指向的对象,
  • 第二个参数开始可以接收任意个参数,这些参数将会作为function的参数传入function
  • 调用call的方法会立即执行
代码语言:javascript
复制
  	function People(name,skill){
  		this.name=name;
  		this.skill=skill;
  		this.paly=function(){
  			alert( this.name+"使出了"+this.skill)
  		}
  	}
  	var people1=new People("小鱼儿","吐泡泡");
   	var person=new Object();
        People.call(person ,"啄木鸟","捉虫子");
 	people1.paly();
 	person.paly()

  </script>

代码基本没变,就是把apply替换成了call,作用相同,两者最大区别就是传递参数的方式不同, 通俗说 call传递参数是直接用双引号,然后一个接着一个传递 apply传递参数是通过一个数组的形式传递

代码语言:javascript
复制
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档