JS中this的用法

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> JS中this的用法

this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。this的指向在函数定义的时候是确定不了的,只有在函数执行的时候才能确定, 因为this是执行上下文环境的一部分,而执行上下文需要在代码执行之前确定,而不是定义的时候。

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是“this指的是调用函数的那个对象”。下面分四种情况,讨论this的用法。

在全局下,this指向window。


 console.log(this);//Window { …}

普通函数在调用时,其中的this也指向window。


var fn=function(){
  console.log(this);//Window { …}
}
fn();
JS中this的用法

 var obj = {
        fn: function() {
            console.log(this);//{fn: ƒ}
        }
  }
 obj.fn();

注意:函数作为某个对象的一个方法,但函数不是作为对象的一个方法被调用,而是当做普通函数调用时,this依旧指向window。


 var obj = {
        fn: function() {
            console.log(this);//Window { …}
        }
 }
 var fn1 = obj.fn;
 fn1();
JS中this的用法

 function Obj() {
        this.val = '前端麻辣烫';
        console.log(this) //Obj {val: "前端麻辣烫"}
    }
 var obj1 = new Obj();

apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。


function fn(){
  console.log(this)//{}
};
var obj={};
fn.apply(obj);

apply()的参数为null、undefined或者不传参时,默认指向全局对象Window。


 function fn() {
        console.log(this) //Window { …}
    };
var obj = {};
fn.apply();

感谢垂阅!文章中有错误或者不全面的地方,欢迎不吝指出。

每天进步一点点,保持好心情~

始发于微信公众号: 前端麻辣烫

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> JS中this的用法


  转载请注明: 好好学java JS中this的用法

 上一篇
JS笔试题(6)变量预解析 JS笔试题(6)变量预解析
题目     var a = 1;     var b = function a(x) {         x && a(–x);     };     console.log(a);     console.log(b);
2021-04-05
下一篇 
JS的防抖与节流 JS的防抖与节流
在进行窗口的resize、scroll,输入框内容校验等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常糟糕。此时我们可以采用debounce(防抖)和throttle(节流)的方式来减少调用频率,同时又不影响
2021-04-05