本笔记为学习网易云课堂上的【撩课-零基础玩转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();