this以及apply,call,bind之间的区别

关于this对象
this对象是在运行时基于函数的执行环境绑定的:在全局环境中,this等于windown,而当函数被某个对象调用时,this等于那个对象

每个函数都有自己的执行环境,全局执行是最外围的一个执行环境。this指向就是当前代码所在的执行环境

改变this执行的几种方法以及之间的区别:

apply()和call()
有两个参数,第一个参数是绑定给this的值,call()第二个参数是一个参数列表,apply()第二个参数是参数是一个参数数组,当第一个参数是null或undefind,this指向windows
每个函数都包含两个非继承而来的方法:apply()和call(),他们两个都是用来在特定的作用域中调用函数,然后可以设置调用函数的this指向。
apply()和call() 可以通过传入作用域来扩充函数赖以运行的作用域。通过传入的作用域不同,来改变函数的this指向

bind()
这个方法会创建以恶搞函数的实例,其this值会被绑定传入**bind()**的值
例如:

var name = "名字";
var person = {name: "小明"};
function sayHello () {
console.log(this.name + ': hello')
}
var personSay = sayHello.bind(person);
personSay(); // 小明:hello

上面例子通过bind将sayHello的实例赋给了personSay,同时将this指向了person对象,所以此时即使是在全局作用域中调用这个函数,也会看到sayHello实例上的this.name指向的是blue;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值