JavaScript

本笔记为学习网易云课堂上的【撩课-零基础玩转JavaScript】所做。

函数在定义的时候 this 是不确定的,只有在调用的时候才可以确定。 

一、普通函数执行,内部 this 指向全局对象 window

function func(){
    console.log(this);  //Window {window: Window, self: Window, document: document, name: "", location: Location, …}
}
func();

二、如果函数作为一个对象的方法,被该对象所调用,那么函数内的 this 则指向该对象

var obj = {
    name: '撩课',
    func: function(){
        console.log(this);    //{name: "撩课", func: ƒ}
    }
}
obj.func();

因为 this 指向该对象,所以,可以通过 this 取得对象 obj 的属性值。

var obj = {
    name: '撩课',
    func: function(){
        console.log(this.name); //撩课
    }
}
obj.func();

三、构造函数中的 this 是一个隐式对象,类似一个初始化的模型,所有方法和属性都挂在到了这个隐式对象身上,后续通过 new 关键字来调用,从而实现实例化

function Fn(){
    this.name = '张三';
    this.age = 23;
    console.log(this);  //{name: "撩课", func: ƒ}
}
new Fn();  
原文地址:https://www.cnblogs.com/xiaoxuStudy/p/15064479.html