js-构造器

本文详细介绍了JavaScript中的构造器函数,包括其作用、new关键字的工作原理,以及如何定义私有变量。此外,还探讨了this关键字的指向,包括全局环境、对象内部、匿名函数以及事件绑定中的特殊场景,并提供了示例代码进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造器
         用来给对象赋初始值,构造器是一种特殊的函数,如果不写,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙璐_iLu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值