美文网首页
044|JavaScript中的this

044|JavaScript中的this

作者: 中年小钢炮 | 来源:发表于2017-05-24 19:34 被阅读20次

在前面学习构造函数时,我们学会了在构造函数中使用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专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!

我的微信

相关文章

网友评论

      本文标题:044|JavaScript中的this

      本文链接:https://www.haomeiwen.com/subject/fkvoxxtx.html