对象中的apply&call
显式绑定法 apply/call(); 通过显式绑定法可以使用另一个对象中的方法
- apply/call()都是JS预定义的方法, 他们都可以用于将一个对象作为参数调用对象方法
- FOR example
const person1 = {
nameFunction: function() {
return this.name + this.sex + this.age + '岁';
},
};
const person2 = {
age: 20,
sex: '女',
name: 'Alone'
};
person1.nameFunction.call(person2);// 把函数nameFunction的this指向替换成person2;
call(); 除了可以把对象当参数传过去外, 还能带其他的参数, 形式call(Obj, ...arr);
- 使用方法
const personClass = {
name: 'Steve Jobs',
age: 65,
sex: '男',
};
const personFun = {
SpeakFunc: function(a,b,c) {
return `姓名${this.name},性别${this.sex},${this.age}岁,${a+b+c}`
}
};
personFun.SpeakFunc.call(personClass, '爱好', 'Mac', '电脑');
const hello = 'hello';
const Mac = 'Mac';
const Yo = 'Yo';
personFun.SpeakFunc.call(personClass, {hello}, {Mac}, {Yo});
apply()
- 基本和call()一样, 区别传参形式不一样, call()分别接收参数, apply()接收数组参数;
- 实用方法example: Math.max('1','2','3'); => 分别接收参数,如果是一个数组需要取最大值那么用apply
- Math.max.apply(null, [1,3,4,5,6]); => 6;
- 使用方法
const person = {
interest: '玩球',
color: 'black',
house: '太空站',
sex: '男'
};
const interest = '唱歌',
color = 'blue',
house = '火星',
sex = '女';
let personFun = {
interest: '唱歌',
color: 'blue',
house: '火星',
sex: '女',
example: (a, b, c) => {
// 箭头函数this的指向始终表示定义箭头函数的对象=>window or '其他'
return `这个${this.sex}人在${this.house}${this.interest}${a}${b}${c}`
}
};
personFun.example.apply(person, ['好玩','bu','好玩']);
//'这个undefined人在undefinedundefined好玩bu好玩'
// Remark对像函数里面不能写箭头函数
// 改成
let personFun = {
example: function(a, b, c){
return `这个${this.sex}人在${this.house}${this.interest}${a}${b}${c}`
}
};
对象中的apply&call的更多相关文章
- JavaScript中的apply,call与this的纠缠
1.apply定义 apply:调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数. 语法:apply([thisObj[,argArray]]) thisObj 可选.要用 ...
- JavaScript中的apply和call函数详解(转)
每个JavaScript函数都会有很多附属的(attached)方法,包括toString().call()以及apply().听起来,你是否会感到奇怪,一个函数可能会有属于它自己的方法,但是记住,J ...
- 011-Scala中的apply实战详解
011-Scala中的apply实战详解 object中的apply方法 class中的apply方法 使用方法 apply方法可以应用在类或者Object对象中 class类 必须要创建实例化的类对 ...
- js中的apply调用
今天看了阮一锋老师的一篇文章,感觉很明了对闭包的理解,尤其是文章中的apply的介绍 apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象. ...
- JS中的apply,call,bind深入理解
在Javascript中,Function是一种对象.Function对象中的this指向决定于函数被调用的方式.使用apply,call 与 bind 均可以改变函数对象中this的指向,在说区别之 ...
- JavaScript中的apply和call函数详解
本文是翻译Function.apply and Function.call in JavaScript,希望对大家有所帮助 转自“http://www.jb51.net/article/52416.h ...
- javascript中bind,apply,call的相同和不同之处
javasctipt中bind,apply,call的相同点是: 1,都是用来改变this的指向; 2,都可以通过后续参数进行传参; 3,第一个参数都是指定this要指向的对象; 不同点: 1,调用方 ...
- 深入理解js中的apply、call、bind
概述 js中的apply,call都是为了改变某个函数运行时的上下文环境而存在的,即改变函数内部的this指向. apply() apply 方法传入两个参数:一个是作为函数上下文的对象,另外一个是作 ...
- javascript 中的apply()和call()方法详解
1.语法 先来看看JS手册中对call的解释: call 方法 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.argN]]]]]) ...
随机推荐
- fastjson、jackson以及son-lib的使用
fastjson前言 fastJson是阿里巴巴出品的一个json序列化工具. 引入依赖 <dependency> <groupId>com.alibaba</group ...
- HOOK API(四) —— 进程防终止
0x00 前言 这算是一个实战吧,做的一个应用需要实现进程的防终止保护,查了相关资料后决定用HOOK API的方式实现.起初学习HOOK API的起因是因为要实现对剪切板的监控,后来面对 ...
- redhat更改yum源及安装PHP环境
redhat更新yum源 删除同RHEL一同安装的yum源 rpm -qa|grep yum #查看本地yum yum list | wc -l #看个数 yum install pip #看现象 r ...
- OSChina 文
转载请注明来源:https://www.cnblogs.com/hookjc/ http://www.oschina.net/p/carbon-forum [高性能PHP论坛 Carbon For ...
- kubeadm/flannel/dashboard/harbor部署以及服务发布
kubeadm/flannel/dashboard/harbor部署以及服务发布 目录 kubeadm/flannel/dashboard/harbor部署以及服务发布 一.部署kubeadm 1. ...
- Zabbix企业级开源监控解决方案
Zabbix企业级开源监控解决方案 目录 Zabbix企业级开源监控解决方案 一.Zabbix 1. 监控系统的必要性 2. 监控软件的作用 3. Zabbix的定义 4. Zabbix的监控原理 5 ...
- GitHub page创建
这是我的博客,才刚刚建成请多多指教 https://henryztong.github.io/ 以下地址都是关于创建GitHub 博客的: 地址 说明 https://pages.github.c ...
- JVM的监控
# Table of Contents * 一.jvm常见监控工具&指令 * 1. jps:jvm进程状况工具 * 2.jstat: jvm统计信息监控工具 * 3.jinfo: java配置 ...
- Solution -「LOJ #138」「模板」类欧几里得算法
\(\mathcal{Description}\) Link. \(T\) 组询问,每次给出 \(n,a,b,c,k_1,k_2\),求 \[\sum_{x=0}^nx^{k_1}\left\ ...
- Spring中的Environment外部化配置管理详解
Environment的中文意思是环境,它表示整个spring应用运行时的环境信息,它包含两个关键因素 profiles properties profiles profiles这个概念相信大家都已经 ...