this关键字与call,apply,bind绑定

1.不管是什么场合,this都有一个共同点:它总是返回一个对象

2.this就是属性方法“当前”所在的对象

3.JavaScript 语言之中,一切皆对象运行环境也是对象,所以函数都是在某个对象之中运行,this就是函数运行时所在的对象(环境)。

4.如果对象的方法里面包含thisthis的指向就是方法运行时所在的对象。该方法赋值给另一个对象,就会改变this的指向。

5.函数实例的call()方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。

var obj = {};
var f = function () {
  return this;
};
f() === window // true
f.call(obj) === obj // true

6.call()方法的参数,应该是一个对象。如果参数nullundefined,则默认传入全局对象

var n = 123;
var obj = { n: 456 };
function a() {
  console.log(this.n);
}
a.call() // 123
a.call(null) // 123
a.call(undefined) // 123
a.call(window) // 123
a.call(obj) // 456

7.如果call()方法的参数是一个原始值,那么这个原始值会自动转成对应的包装对象,然后传入call()方法。

8.call()的第一个参数就是this所要指向的那个对象,后面的参数则是函数调用时所需的参数。

function add(a, b) {
  return a + b;
}
add.call(this, 1, 2) // 3

9.apply()方法的作用与call()方法类似,也是改变this指向,然后再调用该函数。唯一的区别就是,它必须接收数组作为函数执行时的参数。

function f(x, y){
  console.log(x + y);
}
f.call(null, 1, 1) // 2
f.apply(null, [1, 1]) // 2

10.bind()方法用于将函数体内的this绑定到某个对象,然后返回一个新函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值