如题:
我一直以为this
指的是包含它的最近的作用域(父级作用域)
但是看到下图
这里的this
为什么指向的是Jsonob
而不是constructor
构造函数呢?
如题:
我一直以为this
指的是包含它的最近的作用域(父级作用域)
但是看到下图
这里的this
为什么指向的是Jsonob
而不是constructor
构造函数呢?
你代码的同一函数内,有什么是你不能使用的,this 指向自身函数有啥意义?
var fn=function(a,b){console.log(this+','+ a+','+b)}
fn.call([0],1,2)
fn(1,2)
新手的话有个最简单判断 .前的就是this
var o={}
o.m=fn
o.m(1,2) //.前的就是this (this is o)
对于 fn(1,2) 理解为 window(全局).fn(1,2) //(this is window)
《javascript高级程序设计》中有说到:this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象调用时,this等于那个对象。不过,匿名函数具有全局性,因此this对象同常指向window
不过针对于匿名函数this具有全局性的观点仍是有争议的,具体this作用域问题可参考
【Javascript】深入理解this作用域问题以及new运算符对this作用域的影响
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答878 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
1.this不指向Jsonb 如果你new了一个Jsonb的实例,this指向的是这个实例,而非类,所以首先你要清楚什么是类什么是实例
2.要搞懂this并不难,建议看一下
你不知道的JS上
前两章,你就能搞明白作用域与this3.简单来说,this是动态的,是执行时候绑定的;作用域是静态的,是在你写代码的时候绑定的。this只有4种方式确认其值,都了解了就迎刃而解了