对象中的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]]]]]) ...
随机推荐
- Java 书写规范简单整理
本文带有华为Logo的PPT图片,引自:华为云课堂 目录 Java基础语句使用规范 选择结构 switch 默认要有default分支 注意break的使用 如果使用枚举,并且选项已全部列出,可以没有 ...
- js将HTML中table导出到EXCEL word (只支持IE) 另用php 配合AJAX可以支持所有浏览器
转载请注明来源:https://www.cnblogs.com/hookjc/ <HTML> <HEAD> <title>WEB页面导出为EXC ...
- NSString为何要用copy修饰,而不是strong?
NSString本身是无所谓的,但是如果一个 NSString 指针指向了一个 NSMutableString的内存空间的话,如果使用 strong 修饰的话,如果你在别处修改这个值的话,那么原来的值 ...
- iOS开发笔记,简单实现视频音频的边下边播
总是在网上看别人的博文,受益匪浅,从没自己写过,今天分享一点小经验,第一次写技术博客,希望对同行的ios猿们有所帮助. 先介绍一下自己的情况:一年ios开发,http协议不太懂,大约知道断点下载h ...
- MySQL时间格式TIMESTAMP和DATETIME的区别
时区,timestamp会跟随设置的时区变化而变化,而datetime保存的是绝对值不会变化 自动更新,insert.update数据时,可以设置timestamp列自动以当前时间(CURRENT_T ...
- 2、Linux基础--常用系统命令与快捷键
笔记 1.昨日问题 1.mac系统虚拟机的问题 2.虚拟机连不上网 1.xshell连接不上 1.虚拟网络编辑器和vmnat8网卡设置错误 2.ping不通百度 1.DNS IP编写错误 2.网卡的网 ...
- Zookeeper 提供的API
上篇介绍了Zookeeper命令行相关的知识,本小作文介绍从另一个维度操作Node相关的内容:Zookeer的API.同样借用Zookeeper应用之一的数据注册与订阅中的案例类比命令行操作,重点介绍 ...
- KafKa——学习笔记
学习时间:2020年02月03日10:03:41 官网地址 http://kafka.apache.org/intro.html kafka:消息队列介绍: 近两年发展速度很快.从1.0.0版本发布就 ...
- 使用注解实现SpringIOC和SpringAOP
使用注解实现ioc @Component:实现Bean组件的定义 @Repository:标注dao类 @Service:标注业务类 @Controller:标注控制类 Bean的自动装配: @Aut ...
- .NET6: 开发基于WPF的摩登三维工业软件 (7)
做为一个摩登的工业软件,提供可编程的脚本能力是必不可少的能力.脚本既可以方便用户进行二次开发,也对方便对程序进行自动化测试.本文将结合AnyCAD对Python脚本支持的能力和WPF快速开发带脚本编辑 ...