博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
this 的显示绑定-call、apply
阅读量:5873 次
发布时间:2019-06-19

本文共 1118 字,大约阅读时间需要 3 分钟。

简单的栗子:

function(){

  console.log(this.a);
}
var obj={

  a:2  

};

foo.call(obj);//2  call把foo中的this指向了obj

------------------------------注意↓  "装箱"

当第一个参数传入的是:字符串类型、布尔、数字类型   这个原始值会被转换成它的对象形式

new String()  

new Boolean()

new Number()

-----------------------------显示绑定-栗子1↓

function foo(){

  console.log(this.a);

}

var obj={
  a:2
};
var bar=function(){

  foo.call(obj);

};

bar();//

setTimeout(bar,100);//

bar.call(window);//
-----------------------------显示绑定-栗子2↓

function foo(something){//3

  console.log(this.a,something);this.a=2 
  return this.a+something;  //5
}
var obj={

  a:2

};

var bar=function(){

  return foo.apply(obj,arguments);  //arguments=3    foo中的this指向了obj  

};

var b=bra(3);
console.log(b);//5

-----------------------------显示绑定-栗子3---------------Function.prototye.bind↓

function foo(something){

  console.log(this.a,something);

  return this,a+something;

}

function bind(fn,obj){//辅助绑定函数

  return function(){

    return fn.apply(obj,arguments);

  }

}

var obj={

  a:2

};

var bar=bind(foo,obj);

var b=bar(3);

console.log(b);

 

 

 

 

 

 

 

 

 

------------------------后续详细说call、apply的参数

 

转载于:https://www.cnblogs.com/trend/p/7527573.html

你可能感兴趣的文章
HttpClient连接池的连接保持、超时和失效机制
查看>>
eigrp debug命令详解
查看>>
NFS配置文件
查看>>
J2ME程序员容易遇到的问题!不断更新中_2008.05.17
查看>>
实例标识助力您的应用迁上云端
查看>>
1-4 多文档界面处理(2)
查看>>
使用Weka进行数据挖掘
查看>>
《Essential Linux Device Drivers》中文版第1章
查看>>
让远程传输大文件变得更快
查看>>
WEB程序调用客户端程序
查看>>
Linux 下的 sleep
查看>>
System.Convert 的一些事
查看>>
你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(下)
查看>>
解决Maven的Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
查看>>
iOS:Xcode7下创建 .a静态库 和 .framework静态库
查看>>
complex的小困惑
查看>>
怎么样做好手机网站的优化和推广呢?
查看>>
费尔德曼的百吉饼实验:人类的诚实程度其实超出你的想象!
查看>>
sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别
查看>>
干货:解码OneData,阿里的数仓之路。
查看>>