1:每个函数都包含两个非继承而来的方法:call(),apply().

2:call方法和apply方法作用是一样的。

下边是call的使用例子:

 window.color = 'red';
document.color = 'yellow';
var s1 = {color: 'blue'}; function getColor (){
console.log(this.color);
}
getColor.call(); //red (默认传递参数)
getColor.call(window);// red
getColor.call(document);//yellow
getColor.call(s1);//blue
getColor.call(this);//red
 var Pet={
words : '...',
speak : function(say){console.log(say+ ' ' + this.words);}
} Pet.speak('howling'); //howling... var Dog = {words: 'wang wang'} Pet.speak.call(Dog, 'barking');// barking wang wang

下边是apply使用例子

 window.number = 'one';
document.number = 'two';
var s2 = {number: 'three'}; function getNum(){ console.log(this.number); } getNum.apply(); // one 默认
getNum.apply(window); //one
getNum.apply(document);//two
getNum.apply(s2);//three
getNum.apply(this);//one
 function Pet(words){
this.words = words;
this.speak = function(){ console.log(this.words) }
} function Dog(words){
// Pet.call(this, words);
Pet.apply(this, arguments);
} var dog = new Dog('wang wang');
dog.speak();// wang wang

3:不同点是接收参数的方式不同。

function add(c,d){ return this.a + this.b + c + d;}

var s = {a:1, b:2};
console.log( add.call(s,3,4) );// 1+2+3+4 =10
console.log( add.apply(s,[3,4]) ); // 1+2+3+4 =10
 window.firstName = "tomF";
window.lastName = "tomL";
var myObj = {firstName:"myF", lastName:"myL"}; function getName(){ console.log(this.firstName + this.lastName); } function getMess(sex, age){
console.log(this.firstName + this.lastName+ "性别:"+sex+"age:"+age);
} getName.call(window);//tomFtomL
getName.call(myObj);//myFmyL
getName.apply(window);//tomFtomL
getName.apple(myObj);//myFmyL getMess.call(window,'girl',21);//tomFtomL性别:girlage:21
getMess.apply(window,['girl',21]);//tomFtomL性别:girlage:21
getMess.call(myObj,'unknown',30);//myFmyL性别:unknownage:30
getMess.apply(myObj,['unknown',30]);//myFmyL性别:unknownage:30

call 和 apply 方法的更多相关文章

  1. JS中 call() 与apply 方法

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  2. JavaScript学习笔记(1))——————call,apply方法

    学习前端也有一段时间了,但是效果甚微.利用时间不够充分,虽然是利用工作之余来学习.但是这不能成为我的借口. 今天学习了(其实看了很多遍)call apply方法. function abc(a,b){ ...

  3. angularjs $scope.$apply 方法详解

    myApp.controller('firstController',function($scope,$interval){ $scope.date = new Date(); setInterval ...

  4. 《ES6基础教程》之 Call 方法和 Apply 方法

    <script type="text/javascript"> // Call方法: // 语法:call(thisObj[,arg1,arg2,...,argN]) ...

  5. Js apply方法详解

    我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...

  6. JS中的call()和apply()方法

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  7. 优雅的数组降维——Javascript中apply方法的妙用

    将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性实现更为简洁优雅的转换.本文将从朴素的循环转换开始,逐一介绍三 ...

  8. js巧用apply方法实现数组最值以及合并

    尽管js的apply方法在平常的使用中并不多见,但是在某些地方使用的还是很有帮助性的,这里就和大家说两个比较实用的例子:1.数组最大最小值 求数组中的最大最小值,js有相应的方法:Math.min() ...

  9. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  10. scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类

    一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...

随机推荐

  1. 5G能带来什么改变-从鸿蒙OS说起

    背景 从5G投票事件开始,开始关注5G.许多文章都说到5G的特点有速度快.时延低,其中,时延低是最重要的特点.然而,时延低能给社会带来什么改变呢? 2G是短信的时代,3G促成了语音视频,4G促成了短视 ...

  2. 轻量ORM-SqlRepoEx介绍

    轻量级 ORM-SqlRepoEx 介绍 SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的 ...

  3. 运维开发笔记整理-Django模型语法

    运维开发笔记整理-Django模型语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模型基本概念 1>.什么是模型 模型是你的数据唯一的,权威的信息源.它包含你所存储数 ...

  4. 题解 洛谷P5380 【[THUPC2019]鸭棋】

    就是一道大模拟. 首先,来解释一下复杂的题意: 给你一些棋子,每个棋都有不同的走法,开局是回归原位. 接下来,题目会给你一个虚拟的走子操作(注意不一定真实),你所需要判断当前操作是否正确.若不正确,输 ...

  5. ado.net核心:DataTable对象

    概述 DataTable表示内存中数据的一个表. .net命名空间:System.Data DataTable构造方法 DataTable() //不带参数初始化DataTable 类的新实例. Da ...

  6. linux autofs自动挂载

    autofs:自动挂载器 自动挂载器是一个监视目录的守护进程,并在目标子目录被引用时,自动执行预定义的NFS挂载 自动挂载器由autofs服务脚本管理 自动挂载器由auto.master配置文件进行配 ...

  7. 软件测试技术之可用性测试之WhatsApp Web

    Tag:可行性测试.测试流程.结果分析.案例分析 WhatsApp是一款面向智能手机的网络通讯服务,它可以通过网络传送短信.图片.音频和视频.WhatsApp在全球范围内被广泛使用,是最受欢迎的即时聊 ...

  8. 当服务全部宕机时候的处理方法,md

    ![](https://xiahualou.oss-cn-shanghai.aliyuncs.com/img/20191219143156.png)   来自为知笔记(Wiz)

  9. PostgreSQL 锁机制浅析

    锁机制在 PostgreSQL 里非常重要 (对于其他现代的 RDBMS 也是如此).对于数据库应用程序开发者(特别是那些涉及到高并发代码的程序员),需要对锁非常熟悉.对于某些问题,锁需要被重点关注与 ...

  10. 2019-2020-1 20199302《Linux内核原理与分析》第一周作业

    2019.9.13 说明:可能是因为网速问题,笔记本上一直没有办法加载实验楼的学习界面,所以没有使用实验楼提供的环境,而是用的ubuntu进行的所有实验. 二.学习第二章,对shell命令有了一个大概 ...