在前面学习构造函数时,我们学会了在构造函数中使用this来初始化每一个新创建对象。这一节里,我们再来深入学习一下this。
this是JavaScript中的一个关键字, 可以在函数体内使用,也可以在函数体外使用。
默认this
每个JavaScript运行环境都有一个全局对象。当普通调用一个函数时,this就指向这个全局对象。
- 在浏览器环境中,这个全局对象是window对象
- 在Node.js环境中,这个全局对象是global。
下面通过一个Node.js环境下的代码来看看是不是这样:
function sayHi()
{
this.age = 18 // 给this添加age属性
}
console.log(global.age); // 执行前,查看.age属性
sayHi()
console.log(global.age); // 执行后,查看.age属性
上述代码,分别在sayHi函数执行前后打印出global.age的值。让我们看一下结果:
运行结果在执行前,global.age为undefined,而执行后,global.age为18。因此,sayHi方法中的this其实就是global对象。
作为成员方法调用的this
我们知道,一个函数作为一个对象的属性的时候,就叫做成员方法。
当一个函数以成员方法的形式执行时,this又不一样。此时this指向的该对象。
我们通过下面的代码来理解一下:
function updateAge()
{
this.age = 18
}
var student = {}
student.updateAge = updateAge
console.log(student.age) // 执行方法前,输出age
student.updateAge()
console.log(student.age) // 执行方法后,输出age
上述代码,将updateAge函数赋值给student对象,然后以成员方法的形式调用。我们看一下运行结果:
运行结果可以看到,执行student.updateAge方法前,student.age为undefined,而执行后,student.age为18。因此可以判定,当updateAge()执行时,this指向了student对象。
好了,这一节就到这里。我们学习的内容越来越复杂了,希望你都掌握了。
什么是向对对象的封装性?
什么是索引容器?
请继续关注我的课程,我将在后续课程中帮大家依次解答上述问题。
想学计算机技术吗?需要1对1专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!
我的微信
网友评论