call 和 apply 方法
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 方法的更多相关文章
- JS中 call() 与apply 方法
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- JavaScript学习笔记(1))——————call,apply方法
学习前端也有一段时间了,但是效果甚微.利用时间不够充分,虽然是利用工作之余来学习.但是这不能成为我的借口. 今天学习了(其实看了很多遍)call apply方法. function abc(a,b){ ...
- angularjs $scope.$apply 方法详解
myApp.controller('firstController',function($scope,$interval){ $scope.date = new Date(); setInterval ...
- 《ES6基础教程》之 Call 方法和 Apply 方法
<script type="text/javascript"> // Call方法: // 语法:call(thisObj[,arg1,arg2,...,argN]) ...
- Js apply方法详解
我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...
- JS中的call()和apply()方法
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- 优雅的数组降维——Javascript中apply方法的妙用
将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性实现更为简洁优雅的转换.本文将从朴素的循环转换开始,逐一介绍三 ...
- js巧用apply方法实现数组最值以及合并
尽管js的apply方法在平常的使用中并不多见,但是在某些地方使用的还是很有帮助性的,这里就和大家说两个比较实用的例子:1.数组最大最小值 求数组中的最大最小值,js有相应的方法:Math.min() ...
- 原生JS中apply()方法的一个值得注意的用法
今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...
- scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...
随机推荐
- urlib库
urllib库是python中最基本的网络请求库,可以模拟浏览器的行为,向指定的服务器发送请求,并可以保存服务器返回的数据. urlopen() urllib.request模块提供了最基本的构造ht ...
- Win10-安装.net 2,3,.3.5
win10x64(ver1809).iso放镜像到光驱后执行cmd(.net3.5包括2和3)dism.exe /online /enable-feature /featurename:NetFx3 ...
- CV2识别图片A,B,C,D
这个模型是经过简单训练,只能识别四个英文字母:ABCD,是我为了提取答案才训练的,因为科大,百度,以及腾讯的识别不是很准,所以自己训练自己使用,希望能够给你带来方便.下面是训练好的model,如多你感 ...
- yum 异常解决一例
http://mirrors.cloud.aliyuncs.com/centos/6/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 ...
- 小顶堆第二弹-----堆降序排序(C语言非递归)
现在po一下C语言版本的,留作以后接口使用. 1 #include <stdio.h> #include <stdlib.h> #define HEAP_SIZE 100 #d ...
- 剑指Offer(二十三):二叉搜索树的后序遍历序列
剑指Offer(二十三):二叉搜索树的后序遍历序列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...
- destoon模板语法规则笔记
1.包含模板 {template 'header'} 或 {template 'header', 'member'} {template 'header'} 被解析为 : <?php inclu ...
- python根据字典的值进行排序:
有一个列表嵌套字典:[{"a": 5}, {"b": 4}, {"c": 1},{"e": 2}, {"d&q ...
- 集成腾讯Bugly日志- Android(1)
Bugly 是腾讯公司为移动开发者开放的服务之一,这里主要指 Crash 监控.崩溃分析等质量跟踪服务. 一.登录BUGLY官网 1.登录BUGLY官网以后,选择新建产品,选择IOS或ADNROID平 ...
- postgresql Kill掉正在执行的SQL语句
kill方式是杀掉进程,但是有时候需要取消相关SQL语句,采用以下方式 一.查看哪些SQL语句正在执行 语句如下:SELECT datname,procpid,query_start, current ...