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 ...
随机推荐
- 安卓MediaPlayer框架之Binder机制
Binder简介 Binder是Android系统进程间通信的主要方式之一. 1.在ASOP中,Binder使用传统的C/S通信方式:即一个进程作为服务端提供诸如视音频解封装,解码渲染,地址查询等各种 ...
- plsql developer中如何设置sql window显示行号
转自:https://blog.csdn.net/qq_31302091/article/details/74931828 英文版的plsql developer中,很多时候,很多功能不去用,都不知道 ...
- AutoMapper 初次使用心得
本例以asp.net webform为例: 结构: 主要代码:AutoMapperConfig 类 public class AutoMapperConfig { public static void ...
- c# CryptoStream 类
- CM的私有仓库搭建
CM的私有仓库搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们有时候会因为网络不稳定的因素,导致安装某些服务直接失败.当安装包比较大的时候,我们就得考虑自建私有仓库 ...
- jmeter + ant + jenkins 自动化集成环境搭建
所需工具 一.jmeter 工具下载 https://jmeter.apache.org/ 配置环境JDK等及各种插件 二.Ant安装(http://ant.apache.org/) 安装Ant是为 ...
- linux 下安装node 并使用nginx做域名绑定
#1 ,home目录下 下载nodejs安装包,解压 并修改文件夹名称 wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar. ...
- 利用Minhash和LSH寻找相似的集合
from: https://www.cnblogs.com/bourneli/archive/2013/04/04/2999767.html 问题背景 给出N个集合,找到相似的集合对,如何实现呢?直观 ...
- 51nod 2488 矩形并的面积
在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积.即它们重叠在一起的总的面积. 收起 输入 8个数,分别表示第一个矩形左下角坐标为(A,B),右上角坐标为(C ...
- test20190826 NOIP2019 模拟赛
100+100+40=240.我觉得如果没做过第三题考场上却能想出来的都是神仙. 基因突变 [问题描述] 邪恶的 707 刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大 ...