call apply bind 区别?
call apply bind 区别?
例:定义一个计算器,没绑定bind的为公共计算器,call可以调用,绑定bind的为私人计算器,别人调用不了,
//ps:用bind绑定的call强制作借用不好用了,
function calc(base,bonus){
console.log(
this.ename+'的总工资是'+(base+bonus)
)
}
var lilei = {ename:'Li Lei'};
var hmm = {ename:"Han Meimei"};
//lilei临时借用calc计算器
calc.call(hmm,10000,4000) //Han Meimei的总工资是14000
calc.call(lilei,10000,1000) //Li Lei的总工资是11000
//lilei买了一个和 calc一样的计算器,新计算器永久属于lilei
var lilei_calc=calc.bind(lilei);
lilei_calc(10000,3000); //Li Lei的总工资是13000
lilei_calc(10000,5000); //Li Lei的总工资是15000
lilei_calc(10000,9000); //Li Lei的总工资是19000
//hmm借lilei的计算器,call没有bind强大,借来用不了,名还是Li Lei
lilei_calc.call(hmm,10000,2999); //Li Lei的总工资是12999,
call和apply:临时借用一个函数,并替换this为指定对象,
-----立刻执行
bind:基于现有函数,创建一个新函数,并永久绑定this 为指定对象。
-----只创建函数,不执行(要执行在下边在调用)
何时:立刻执行函数-------call
不立刻执行 -------bind
call apply bind 区别?的更多相关文章
- call, apply, bind 区别
#call, apply, bind 区别及模拟实现call apply bind 三者都可以用来改变this的指向,但是在用法上略有不同 首先说一下call和apply的区别 call和apply ...
- js中的call,apply,bind区别
在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:app ...
- call(),apply(),bind() 区别和用法
call call 方法第一个参数是要绑定给this的值,后面传入的是一个参数列表.当第一个参数为null.undefined的时候,默认指向window. var arr = [1, 2, 3, 8 ...
- js 中arguments,call,apply,bind的使用
//对于 arguments和this, 每个函数都有自己独有的arguments和this, 且不进行链式查找 //arguments是什么? //答:1:arguments是收到的实参副本 //2 ...
- bind,apply,call区别总结
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- JavaScript中call,apply,bind方法的区别
call,apply,bind方法一般用来指定this的环境. var a = { user:"hahaha", fn:function(){ console.log(this.u ...
- javascript中的call(),apply(),bind()方法的区别
之前一直迷惑,记不住call(),apply(),bind()的区别.不知道如何使用,一直处于懵懂的状态.直到有一天面试被问到了这三个方法的区别,所以觉得很有必要总结一下. 如果有不全面的地方,后续再 ...
- apply、call、bind区别、用法
apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向): 如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是 ...
- bind、call、apply的区别与实现原理
1.简单说一下bind.call.apply的区别 三者都是用于改变函数体内this的指向,但是bind与apply和call的最大的区别是:bind不会立即调用,而是返回一个新函数,称为绑定函数,其 ...
随机推荐
- ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事)
ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事) 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么我 ...
- 用table绘制 等宽等间距的单元
css: .test1 { empty-cells: show;/*show:指定当表格的单元格无内容时,显示该单元格的边框.*/ border-spacing: 10px 10px;/*用长度值来定 ...
- eclipse导出svn源码,如何转化为项目
1.先导出 2.点击项目右键,选“属性” 3.选择project facets 4.添加对应的支持 5.可进行进一步配置,设置name,然后点击确定等待完成
- jmeter-录制, 编辑脚本,性能测试全过程review
录制脚本 jmeter下载安装略过不谈,上步骤: 1.在测试计划新建-threads-线程组 2.在工作台新建-非测试原件-http代理服务器,设置端口和包含网址 不包含网址 3.在手机/浏览器,设置 ...
- ngnix FastCGI解析漏洞
漏洞描述: Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME.当访问http://192.168.1.103/phpin ...
- ArrayList、LinkList、Vector的区别
ArrayList.LinkedList和Vector均实现了List接口,均为可伸缩数组(均为可动态改变长度的数组).它们是有序的集合,并且其中的元素允许重复. 从底层实现来看: (1)ArrayL ...
- java 打印乘法口诀表
package cn.lijun.demo6; public class Test3 { public static void main(String[] args) { for(int j=1;j& ...
- java中一维数组的定义和遍历
public class ArrayDemo1{ public static void main(String[] args){ //1 定义数组 并同时赋值 int[] arr = new int[ ...
- 流畅的python--2 序列构成的数组
我们把文本.列表和表格叫做数据火车...FOR命令通常能作用于数据火车上. ---ABC Programmer's Handbook 不管是哪种数据结构,字符串.列表.字节序列.数组.XML ...
- 2017-12-15python全栈9期第二天第四节之格式化输出%s和个人简介模板
#!/user/bin/python# -*- coding:utf-8 -*-msg = '''-----------info of zd----------------Name:zdage:24h ...