博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何理解javascript的call和apply
阅读量:6844 次
发布时间:2019-06-26

本文共 818 字,大约阅读时间需要 2 分钟。

网上对于call和apply的解释已经非常多了,但是感觉看完之后,还不是特别理解其作用。

对于call、apply最直接的理解就是继承。

我们在面向对象编程的时候,经常会这样写:

function People(name){    this.name = name} People.prototype={    food:"fish",    say: function(){        console.log("My Name is "+ this.name +",I love "+this.food);    }}
var people = new People('www.ghugo.com');people.say();

以上代码应该很好理解,这时如果我们有一个对象:

hugo2 = {food : "bone"}

我们不想对它重新定义say方法,那么我们可以通过call或apply用People的say方法:

people.say.call(hugo2,'hugo');

也就相当于是这样调用:

hugo2.say() //伪代码,仅作为代码理解用

使用call,也就可以把上面的代码等价于下面的代码:

hugo2 = {    food : "bone",    say: function(){    console.log("My Name is "+ this.name +",I love "+this.food);    }} hugo2.say();

可以看出函数调用的三种方式:

obj.myFunc();myFunc.call(obj,arg);myFunc.apply(obj,[arg1,arg2..]);

用通俗的话总结一下:就是用别人的东西,所以要call一下

另外,apply和call还有一个作用是改变this的指向,这个网上已经大把解释了,自行google一下吧。说太多反而不好理解。

转载地址:http://mxpul.baihongyu.com/

你可能感兴趣的文章
ora-12170:tns连接超时
查看>>
【转载】世界各地对BI的应用状况
查看>>
js获取url参数值
查看>>
动态他Transact-SQL语句处理中的常见问题演示.sql
查看>>
浅谈管理软件开发类项目是怎么来的,怎么接到项目的,欢迎大家补充(转载和标注)...
查看>>
快速了解必要的网络知识
查看>>
HTML5标签嵌套规则
查看>>
Linux下面如何安装Django
查看>>
MySQL 中now()时间戳用法
查看>>
【数据结构与算法】二分查找
查看>>
练习ng-show和ng-hide的方法
查看>>
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
查看>>
Scrapy爬虫框架教程(四)-- 抓取AJAX异步加载网页
查看>>
HBase - 数据写入流程解析
查看>>
Redis(十三):Redis分布式锁的正确实现方式
查看>>
Markdown 语法整理大集合2017
查看>>
为 MariaDB 配置远程访问权限
查看>>
特征选择常用算法综述
查看>>
中小型网站的缓存策略
查看>>
巧用EasyRadius计费策略设置灵的计费费率,保证帐目一目了然
查看>>