js的call()和apply()方法的理解
call()方法:
》》通过call(),我们可以使用属于另一个对象的方法
var person = {fullName :function(){return this .firstName + " " +this .lastName;}
}
var person1 = {firstName : "Bill",lastName : "Gates",
}var person2 = {firstName : "Steve",lastName : "Jobs",
}conslole.log(person.fullName.call( person1)); // Bill Gates >>>>使对象person1使用对象person的fullName方法
》》call()方法接收参数
var person = {fullName: function(city, country) {return this.firstName + " " + this.lastName + "," + city + "," + country;}
}
var person1 = {firstName:"Bill",lastName: "Gates"
}
person.fullName.call(person1, "Seattle", "USA"); // Bill Gates,Seattle,USA
》》在另一个方法中使用,下面的apply也可使用同样的方式,只是传递的参数不一样,如var student = new Student('小明', [21, '大三']);
function People(name, age) {this.name = name;this.age = age;
}function Student(name, age, grade) {People.call(this, name, age); >>>>>使this(即Student方法)拥有People的方法this.grade = grade;
}var student = new Student('小明', 21, '大三');
console.log(student.name + student.age + student.grade);//小明21大三
**********************************************
apply()方法和call() 方法的不同之处:call()方法分别接受参数,apply()方法接收数组形式的参数
**************************************************
apply() 方法 您能够编写用于不同对象的方法
》》person的fullName方法被应用到person1
var person = {fullName: function() {return this.firstName + " " + this.lastName;}
}
var person1 = {firstName: "Bill",lastName: "Gates",
}
person.fullName.apply(person1); // 将返回 "Bill Gates"
》》带参数
var person = {fullName: function(city, country) {return this.firstName + " " + this.lastName + "," + city + "," + country;}
}
var person1 = {firstName:"John",lastName: "Doe"
}
person.fullName.apply(person1, ["Oslo", "Norway"]); //Bill Gates,Seatle,USA
》》在数组上模拟max方法,还有模拟min方法,如Math.min.apply(0,[1,2,3]),还有其他等等
Math.max(1,2,3); //返回3
//但是数组没有max方法,于是有了下面的例子,第一个参数无关紧要
Math.max.apply( null , [1,2,3] ); //返回3 >>>>>>>使null对象使用Math对象的max方法
Math.max.apply(Math, [1,2,3]); // 也会返回 3 >>>>>>>使Math对象使用Math对象的max方法
Math.max.apply(" ", [1,2,3]); // 也会返回 3
Math.max.apply(0, [1,2,3]); // 也会返回 3
js的call()和apply()方法的理解相关推荐
- 面试官问:能否模拟实现JS的call和apply方法
写于2018年11月30日,发布在掘金上阅读量近一万,现在发布到微信公众号申明原创.相对比较基础的知识,虽然日常开发可能用得比较少,各种源码中有很多call和apply,需要掌握. 前言 这是面试官问 ...
- js中call()与apply()方法
菜鸟级别的选手,学习+意会.欢迎指正 参考文章 http://uule.iteye.com/blog/1158829 http://blog.csdn.net/myhahaxiao/article/d ...
- javascript的call()方法与apply()方法的理解
先看一段代码 function cat() {} cat.prototype={food:'fish',say:function () {console.log('I love '+this.food ...
- JS -- 对于JQuery中 append 方法的理解
<div class="titleDiv">A</div> click事件{$(".titleDiv").append('<spa ...
- Js中apply方法详解说明
Js apply 方法 详解 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了, ...
- Js apply 方法 详解
Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...
- Js apply方法详解
Js apply方法详解 主要解决一下几个问题: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 首先从 ...
- JS中的call()和apply()方法(转)
转自:http://uule.iteye.com/blog/1158829 JS中的call()和apply()方法 博客分类: JS 1.方法定义 call方法: 语法:call([thisObj ...
- js中call()方法和apply方法的使用
1. 方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
最新文章
- 反编译android的apk
- history linux 日志服务器_Linux下使用rsyslog部署日志服务器 记录history并发送到rsyslog服务器...
- 4 年 46 个版本,一文读懂 Spring Cloud 发展历史
- 字符串处理 —— 回文串相关 —— 添加/删除字符后是否为回文串
- struts2 标签单选框_Struts 2 UI标签–表单,复选框,单选,选择,提交
- 知网搜索论文:如何在知网上查找期刊论文
- 终极算法:机器学习和人工智能如何重塑世界笔记
- 深度学习技术在医疗领域的研究方向及应用
- Vue+TS Echarts股票图
- 安卓游戏《罗马帝国》游戏心得
- ipados远程linux软件,JingOS Linux平板系统v0.6下载发布 支持多点触摸手势
- QT-通用的软件界面框架,好看且实用
- 正则环视(零宽度断言)
- 在cmd 中输入了错误mysql命令后,如何退出?
- 杨振宁国科大演讲互动
- python将图片转换为抽象画
- IPC----pipe的使用
- 战队口号霸气押韵8字_班级口号29条
- 开源 串口调试助手 BaoYuanSerial 使用教程
- Android 过渡动画