javascript - 关于function中的this指向问题
问题描述
关于function中的this指向老觉得很迷惑。
document.body.onclick = function(){
console.log(this); // 这个this指向body
function click_inner(){
console.log(this); // 这个this指向了window
}
click_inner();
}
从上面的代码可以推测出:每个function中都有一个this。
我原先的理解为:click_inner 内没有this,但是其上层函数中有this,所以根据JS的作用域和作用域链的知识可知(内部没有的变量就上溯到上层环境查找,找到就返回),内部的this就是外部函数的变量对象中的this。
按照我原先的理解:那么click_inner内操作的this也应该指向body,但是结果显然说明我原先理解错了。。。
按照结果来说,click_inner内的this也是指向window的,但是为什么window.click_inner()
就报错呢?好像又推翻了上面的推测。。
请大神详细的解答一下关于this的知识。。感激不尽!!
javascript 的this主要是看如何调用这个函数,而不是这个函数所在的作用域。obj.fn()
fn中的 this 就是 obj。 fn()
this是undifine, 而在js进入函数之前,会有 if(!this) { this = window}
这样的操作。因此,后面那个this是window
。
总结一下,this
一共有六种不同的值:
普通函数调用,this为全局对象或是undefined
作为对象的方法,this为那个对象
new 表达式,this为以该函数为原型的新创建的对象
使用 apply/call指定 this
用bind绑定固定的this
事件处理函数中的this是当前的触发事件的DOM元素(event.currentTarget)
详情见: http://zonxin.github.io/post/2015/11/javascript-this
这篇关于javascript - 关于function中的this指向问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!