构造器及其this指向

构造器

        用来给对象赋初始值,构造器是一种特殊的函数,如果不写,js会自动分配默认无参构造器

        例如: function Emp(name,age){

                    this.name=name//赋上你给我传的这个值

                    this.age=age

                    this.say=function(){

                console.log(this.name,this.age)

                  }

                }

                var e=new Emp("小丽",21)//调用构造器

          new关键字具体做了什么?

            1.创建了一个新对象

            2.将构造器的作用域赋给新对象

            3.用this关键字指向这个对象

            4.通过proto寻找父类对象

            5.返回新对象给调用者

    私有变量

          在变量下通过this关键字进行执行,表示通过地址找到对象下的属性和方法,如果要定义私有的属性和方法,可以不通过this关键字定义

          例如:  function Emp(){

                        var name="小明"//私有变量

                        this.age=age

                  }

                    var e=new Emp(22)

                    console.log(e.age)

                    console.log(e.name)

    this指向

            this关键字用于对象体内,用来指向对象下的属性和方法,方便调用

            Global:在node环境下this全局作用域指向Global

            window:在浏览器环境下this的全局作用域指向window

            例如: var a=11

                  console.log(a)

                  console.log(window.a)

                  console.log(this.a)

            this的指向和在哪定义,在哪执行都没有关系

            函数执行时,看函数前面是否有".",有的话,点前面是谁就指向谁,如果没有就指向window

            例如:var name="我是window"

                var obj={

                        name:"我是obj",

                        info:function(){

                              console.log(this.name)

                          }

                            }

                console.log(obj.name) //obj

                obj.info()  //obj

                console.log(window.name)  //window

                console.log(name) //window


            特殊情况:

              1.当this出现在匿名函数里,永远指向window //匿名函数没有变量提升

                var name="我是window"

                var obj={

                        name:"我是obj",

                        info:function(){

                        return function(){//匿名函数

                              return this.name

                      }

                        }

                          }

                var n=obj.info()()

                console.log(n)//window

              2.当给一个dom元素绑定一个事件的时候,事件执行的方法体内,this指向的时当前元素

              var btn=document.getElementById("btn")

              this.name=111

                      btn.οnclick=function(){

                          this. name=222

                          console.log(this)

                          console.log(this.name)

                          }

                function fun(){

                console.log(this)

                        }

                fun()

        改变this执行

                var name="我是window"

                var obj={

                        name:"我是obj",

                        info:function(){//匿名函数

                          var th=this//在obj环境下存一个对象

                          return function(){ return this.name }

                          }

                  }

                var n=obj.info()()

                console.log(n)//obj

————————————————

版权声明:本文为CSDN博主「孙璐_iLu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_47775987/article/details/123275258

你可能感兴趣的:(构造器及其this指向)