js中关于this指向的解答

关于this在各种情况的指向

① 普通函数中this指向的是window

function person(){     // 函数也是window对象里面的
            this.name = "小明";
            console.log(this); //输出this 可以看到this的指向
            console.log(this.name); //输出小明
        }
        person(); //输出

此时this的指向是并不是person,而是 window ,因为函数也是window对象里面的, 因此输出的是window。

② 在对象内部的时候,this指向的是他本身

var name = "小明";
        var person={   // 在对象内部的this 指向的是本对象
            name :"小红",
            showName:function(){
                console.log(this.name );//此时的this指向person对象
            }
        }
        person.showName(); // 输出小红

此时的this指向person对象

③ 作为构造函数来调用的时候,this指向该实例化对象

function Person(name){
            this.name=name;  //谁实例化了对象调用函数 this就指向谁 ,没有实例化就指向window
        }
        var personX=Person("翠花"); //personX没有new 没有实例化
        // console.log(personX.name); //undefined 报错
        
        //构造函数没有通过new构造对象,相当于window对象调用            Person("翠花")方法。
        // 所以this指向的是window对象,并进行赋值window.name="翠花"。
        console.log(window.name); //输出翠花

        var personY =new Person("秋香"); //实例化构造函数 得到实例对象
        console.log(personY.name); //输出 秋香

personX 对象因为没有new进行实例化,因此如果直接personX.name 调用会报错,此时的this指向window,通过window.name 可以将翠花进行输出。
//构造函数没有通过new构造对象,相当于window对象调用Person(“翠花”)方法。
// 所以this指向的是window对象,并进行赋值window.name=“翠花”。
personY 对象经过new进行实例化之后,此时this就指向personY ,因此可以直接输出personY.name 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值