this的绑定规则
代码如下:
function foo() {
console.log('foo函数:', this);
}
var obj = {name: 'lhm'}
obj.aaa = foo
obj.aaa()
通过以上代码可知:
- 1.函数在调用时,Javascript会默认给this绑定一个值
- 2.this的绑定和定义的位置没有关系
- 3.this的绑定和调用方式以及调用的位置有关系
- 4.this是在运行时被绑定的
this的有如下绑定规则:
function foo() {
console.log('foo函数:', this);
}
foo()
function foo() {
console.log('foo函数:', this);
}
var obj = {
bar: foo
}
obj.bar()
function foo() {
console.log('foo函数:', this);
}
var obj = {
name: 'lhm'
}
foo.call(obj)
function foo() {
this.name = 'lhm'
console.log('foo函数:', this);
}
new foo()
绑定优先级:默认绑定的优先级最低,显示绑定优先级高于隐式绑定,new绑定优先级高于隐式绑定,new绑定优先级高于bind
箭头函数的this使用:箭头函数内没有this,会向上一层作用域里查找this的值