首页前端开发JavaScriptjavascript三个this

javascript三个this

时间2023-11-13 16:58:02发布访客分类JavaScript浏览442
导读:JavaScript中的this关键字是指当前函数执行时所在的上下文环境,在不同的情况下可能会有不同的指向,即三种不同的this。本文将详细介绍这三种this,同时也会配合代码实例来帮助读者更好地理解。全局环境中的this当在全局环境下使用...

JavaScript中的this关键字是指当前函数执行时所在的上下文环境,在不同的情况下可能会有不同的指向,即三种不同的this。本文将详细介绍这三种this,同时也会配合代码实例来帮助读者更好地理解。

全局环境中的this

当在全局环境下使用this时,它指向的就是全局对象Window。

console.log(this === window);
 // true

可以看到,这段代码输出的结果为true,说明this和window是指向同一个对象的。

函数中的this

当在函数中使用this时,它的指向会根据调用该函数的方式有所不同。

作为对象的方法调用时

let obj = {
name: 'Tom',getName: function() {
    console.log(this.name);
}
}
    ;
    obj.getName();
 // Tom

可以看到,当函数作为对象的方法来调用时,this就指向该对象。

作为普通函数调用时

function getName() {
    console.log(this.name);
}
    getName();
 // undefined

在作为普通函数调用时,this指向的是window对象。此时如果该函数中使用了this.name,由于window对象中并没有name属性,所以输出的结果是undefined。

使用call、apply或bind方法时

let obj1 = {
name: 'Tom'}
    ;
let obj2 = {
name: 'Jerry'}
    ;
function getName() {
    console.log(this.name);
}
    getName.call(obj1);
     // TomgetName.apply(obj2);
     // Jerrylet func = getName.bind(obj1);
    func();
 // Tom

使用call、apply或bind方法可以改变函数中this的指向。call和apply的作用是一样的,唯一的区别在于传参方式不同。而bind方法则是返回一个新的函数,并把该函数中的this绑定到指定对象上。

构造函数中的this

function Animal(name) {
    this.name = name;
}
    let cat = new Animal('Tom');
    console.log(cat.name);
     // Tom

在构造函数中使用this时,this指向的就是实例对象。在上面的例子中,我们定义了一个Animal构造函数,并通过new关键字构造了一个cat实例。当我们在构造函数中使用this.name = name时,this指向的就是cat实例,这样就给cat对象动态地添加了一个name属性。

总结

三种不同的this指向分别为全局环境中的this、函数中的this以及构造函数中的this。当在全局环境中使用this时,它指向的是全局对象Window。在函数中使用this时,它的指向会根据调用该函数的方式不同而有所不同。当在构造函数中使用this时,this指向的就是实例对象。通过这篇文章,希望读者们对JavaScript中this的不同用法能够有更加深入的理解。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: javascript三个this
本文地址: https://pptw.com/jishu/537666.html
javascript一年四季变化作业 javascript。history

游客 回复需填写必要信息