【深入JavaScript】this的四个绑定规则
在使用函数的时候,总是会碰到一个问题,那么就是this指的是谁?一般this概念在面向对象中的时候比较多,但是Js在函数中也是存在的。 this是谁? 和函数在哪里声明没有关系。 和函数的调用方式,和调用位置有关。 并且this是在运行时绑定的 案例如下
案例一
function foo()
{
console.log(this);
function demo()
{
console.log(this)
}
return demo
}
foo()
var test = foo
test()
案例二
function foo() { console.log(this) } function foo2() { console.log(this) foo() } function foo3() { console.log(this) foo2() } foo3()
案例三
var demo = { name:"xiaoyu", foo:foo } demo.foo()
结果是不是很出乎意料。
先来说一下this的四种绑定规则:
- 默认绑定
- 隐式绑定
- 显示绑定
- new绑定
默认绑定规则下,this是啥就单纯的看你是不是单独运行
function foo() { console.log(this) } foo() // 这种就是单独执行 那么这种的this就是window了 xx.foo() // 这种就是非单独调用,拥有一个名为xx的主体
来看一个稍微麻烦点的案例
function foo(func) { func() } var obj={ name: "why", bar:function(){ console.log(this) } } foo(obj.bar)
这个最终也是window 因为最终的运行也是个单独调用。
隐式绑定
是通过某个对象进行调用的
也就是它的调用位置中,是通过某个对象发起的函数调用。
看如下案例:
123
周小雨》原创,转载请保留文章出处。
本文链接:https://zxyy.me/post-200.html
版权声明:若无特殊注明,本文为《正文到此结束
管理员已关闭本篇文章评论!