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