call和apply

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

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

function.apply(thisObj,[“参数一”,"参数二"......]  <script type="text/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>
//弹出结果:
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);  <script type="text/javascript">
了解:
  • 调用call的对象必须是个函数function
  • call的第一个参数将会是function改变上下文后指向的对象,
  • 第二个参数开始可以接收任意个参数,这些参数将会作为function的参数传入function
  • 调用call的方法会立即执行
  	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传递参数是通过一个数组的形式传递

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ShaoYL

预处理指令--宏定义

3287
来自专栏python学习指南

Python元祖

本篇主要介绍另一种有序列表叫元祖:tuple。更多内容请参考:python学习指南 元祖是什么 tuple和list非常类似,但是tuple一旦初始化就不...

24410
来自专栏Script Boy (CN-SIMO)

Qt Quick编程(1)——QML的核心部分ECMAScript

说道QML,不得不先说一下ECMAScript: ECMAScript语言的标准是由Netscape、Sun、微软、Borland等公司基于JavaScript...

3920
来自专栏柠檬先生

你不知道的javaScript笔记(1)

规避冲突 function foo(){ function bar(a){ i = 3; console.log(a + i); } for ( v...

2255
来自专栏逸鹏说道

Python3 与 C# 面向对象之~封装

原文:https://www.cnblogs.com/dotnetcrazy/p/9202988.html

2143
来自专栏Golang语言社区

Go语言interface详解

interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计...

3697
来自专栏黑泽君的专栏

java基础学习_基础语法(上)03_day04总结

============================================================================= ==...

811
来自专栏coder修行路

Go基础之--结构体和方法

结构体的定义 结构体是将零个或者多个任意类型的命令变量组合在一起的聚合数据类型。 每个变量都叫做结构体的成员。 其实简单理解,Go语言的结构体struct和其他...

3277
来自专栏Java帮帮-微信公众号-技术文章全总结

第十天 面向对象-继承抽象类【悟空教程】

2006
来自专栏学海无涯

14.闭包

951

扫码关注云+社区