this指向问题,只提供案例,不做任何分析

希望大家在测试的道路上找到答案,阔步前行

<script type="text/javascript">
/*this指向 console.log(this); function fn(){
console.log(this);
}
fn(); function Foo(){
this.name="jhon";
this.age=20;
console.log(this);
}
var f1=new Foo(); function Foo(){
this.name="jhon";
this.age=20;
console.log(this);
}
Foo(); var obj={
x:10,
fn:function(){
console.log(this);
console.log(this.x)
}
}
obj.fn(); var obj={
x:10,
fn:function(){
function f(){
console.log(this);
console.log(this.x)
}
f();
}
}
obj.fn() var obj={
x:10,
fn:function(){
console.log(this);
console.log(this.x)
}
}
var fn1=obj.fn;
fn1(); var obj={
x:10
}
var fn=function(){
console.log(this);
console.log(this.x);
}
fn.call(obj); function Foo(){
this.name="jhon";
this.age=20;
}
Foo.prototype.getName=function(){
console.log(this,this.name);
}
var foo=new Foo();
foo.getName();*/ </script>

  

1.谁最终调用函数,this指向谁。

  ①this指向的永远只可能是对象!!!

  ②this指向谁永远不取决于this写在哪,而是取决于函数在哪调用

  ③this指向的对象,称之为函数的上下文context,也叫函数的调用者

2.this指向的规律(与函数调用的方式息息相关):

  this指向的情况,取决于函数调用方式有哪些,

  ①通过函数名()直接调用:this指向window

  ②通过对象.函数名()调用的:this指向这个对象

  ③函数通过数组的一个元素,通过数组下标调用的,this指向这个数组

  ④函数作为window内置函数的回调函数调用时,this指向window如setTimeout setInterval 等

  ⑤函数作为构造函数用new关键字调用时,this指向新new出的对象。

如果您实在不愿意自行分析理解,或者基础较为薄弱无力进行分析:请移步

  王福朋-博客园

吴建锐-博客园

上一篇:牛客练习赛42 C 反着计算贡献


下一篇:如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序