文档章节

JAVASCRIPT的CALL,APPLY 理解为先

UIkitAPP
 UIkitAPP
发布于 2015/12/16 10:43
字数 671
阅读 6
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

call 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法.


注意:该函数的语法与 apply() 方法的语法几乎完全相同,唯一的区别在于,apply()方法接受的是一个参数数组,而 call()方法接受的是一系列参数列表。


了解完这两个方法的概念后,我们来一步一步理解他们的应用.


改变方法内this的指向

我们先来看下面这个例子


var name = "编程的人";

var age = 1;

var person = {

name:"公众号:bianchengderen",

age:20

}

function say(){

console.log("我叫:"+this.name+",年龄:"+this.age)

}

say();// 我叫: 编程的人,年龄: 1

say.call(person);//我叫: 公众号:bianchengderen,年龄:20


这两种调用执行的方式不一样,他们的结果也不一样,不一样在于say方法里面的this指向了不同的对象,第一次执行指向的是window,而我们以call方式执行,将say方法里面的this指向了person对象.

这是不是有点冒充别人的感觉.那我们这样有什么作用了?当然自己可以多多想想,到底能做什么! 我们继续往下面走.


实现继承机制

继承,这是高级面向对象的一种特性,用call我们可以将JAVASCRIPT有这种特点.

在看下面这个例子之前,必须好好理解上面的例子.


function Person(){

this.name = "编程的人";

this.age = 20;

}

function Student(){

Person.call(this);

this.school = "地球";

}

var student = new Student();

//下面打印出来: 编程的人,20,地球

console.log(student.name,student.age,student.school);


在这个例子里,Student函数继承了Person的name和age属性,就是通过Person.call(this)来实现,理解上面的例子后,应该是不难理解的.所以Student即拥有了Person的特点,又有自己的个性,比如这个this.school.


在这里,我们没有涉及到加入参数的传递,是方便大家的理解,需要加入参数传递,大家可以敲代码试一试,看看效果怎么样!


我们就先讲这两个例子吧,免得大家越理解越糊涂.什么事情都是需要简单入手,会了之后才会追求更深的一面!


还有,记得也加入apply的应用实例咯!


本文属于吴统威的博客,微信公众号:bianchengderen 的原创文章,转载时请注明出处及相应链接:http://www.wutongwei.com/front/infor_showone.tweb?id=158 ,欢迎大家传播与分享.


© 著作权归作者所有

UIkitAPP
粉丝 2
博文 19
码字总数 8218
作品 0
深圳
程序员
私信 提问
加载中

评论(0)

前端面试经典题之apply与call的比较

  在讲apply和call之前,我们需要先清楚在js中,this指向的是什么。   大家可以参考一下阮一峰老师写的关于JavaScript中this的原理讲解文章:http://www.ruanyifeng.com/blog/2018/06/ja...

osc_7er18k9i
2019/08/08
5
0
关于javascript中apply()和call()方法的区别

如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言...

kisshua
2012/09/11
196
0
合格前端系列第六弹-从指向看 JavaScript

前言 开写前大家先来理解一下指向:指向,即目标方向、所对的方位。 很多人刚刚接触前端甚至一些“老”前端都经常会在 所谓的难点,如 ,原型,继承,闭包等这些概念中迷失了自我。接下来这篇...

qiangdada
2017/07/23
1.2K
3
js中this的使用及代表意义

我们在js中经常看到this这个关键字,那么他是什么呢?它可以是全局对象、当前对象,也可以是任意对象,函数的调用方式决定了 this 的值。 1. 方法中的this。   在对象方法中, this 指向调...

osc_ypm51igr
2019/02/21
2
0
js中继承的几种用法总结(apply,call,prototype)

一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 1 2 3

走在起点
2015/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【视频】工业互联网在线交流现状、发展、怎么建和规划

PPT介绍目录: 工业互联网的现状 平台介绍 技术路线 人力资源 现实问题 成本中心 工业互联网的发展 两大推动引擎 用户需求的改变 片面与极端 由点到面,点面结合 突破点 现实路径 落脚点 工业...

osc_3ubrwgtm
23分钟前
47
0
单臂-Etrunk-三层交换-路由-DHCP中继-NAT-HTTP服务 实验题

单臂-Etrunk-三层交换-路由-DHCP中继-NAT-HTTP服务 实验题 实验环境 需求描述 pc1、pc2、pc3、pc4可以ping通 虚拟机可以打开网页 了解dhcp中继 了解网络地址转换技术NAT 了解access口跟trunk...

osc_h7zc4umy
23分钟前
24
0
医院防勒索病毒灾备解决方案

医院成勒索病毒重灾区 上述某妇幼保健院并非是个例。近年来,针对医院等医疗系统的网络安全风险一直处于活跃状态且呈现持续上升的态势。医院的业务系统及医学记录、病患资料、预约信息等大量...

osc_gh0ost1g
25分钟前
18
0
2招带你快速获取响应头与发送头

今天带大家用两招快速获取响应头以及发送头。 1、获取请求头 想要获取请求头,就需要会用抓包工具,目前比较普遍的就是fiddler。大家可以在百度搜索下载。首先我们打开fiddler 你会发现左侧这...

osc_3g4j2ghj
27分钟前
20
0
Python Django 数据库基础

对数据库的操作可以直接使用SQL语句,也可以使用图形界面工具。这些一般是DBA(数据库管理人员)做的。开发人员是使用代码链接数据库,对数据库进行操作。 下面进行Python Django框架ORM创建...

osc_itgved4p
29分钟前
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部