js中this指向的问题
- 这样吧,我先说结论好了,不想看的小伙伴或者知道原理的可以直接记公式
- 函数直接被调用时this则指向window(也就是没有.的情况),函数作为某对象的方法调用时(也就是谁调用了这个函数,this就指向调用这个方法的对象),this指向该对象,而箭头函数没有执行上下文,取决于他就近的外面的一层非箭头函数的函数(箭头函数没有执行上下文,取决于最近的非箭头函数的那个函数)。
下面我就来进行一一验证
1 寻找”.”,如果没有找到这个点,那么this就指向window
var app = {
name: "cxy"
}
//这个是指向的window,可以自己将代码copy进浏览器里面运行试试
console.log(this)
- 还有一个就是函数调用的例子
function foo(callback){ callback(); //调用其实在这里,你是找不到“.”的 } foo(function(){ console.log(this); //自己去运行代码看this指向谁 }) //匿名函数里面打印this,没有任何的. 所以指向window,不信可以自己运行一下试试
2 寻找”.”前面一层的那个对象,如果前面一层是对象或者函数,那this就指向这个函数或对象
var person = {naem: "cxy"}
person.sayHello = function(){
console.log(this)
}
// 执行
person.sayHello()
// this 指向的是调用该方法的对象
## 3 调用语句中有多个.
```js
var person = {name:111}
person.height = {heig: 1.8}
person.height.hello = function(){
console.log(this)
}
person.height.hello()
// 打印的this指向最近调用方法的对象
4 通过this引出一个问题就是原型和原型链
4.1 什么是原型,有待我继续研究一下
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1371769065@qq.com