构造函数
<script>
function Persion(name,age){
this.name = name
this.age = age
this.mover = function(){
console.log("三生三世十里桃花")
}
}
let dlrb = new Persion("迪丽热巴",24)
console.log(dlrb)
</script>
构造函数是特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总是和new一起来使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
new在执行时会做四件事情:
1:在内存中创建一个新的空对象。
2:让this指向这个新对象。
3:执行构造函数里面的代码,给这个新对象添加属性和方法。
4:返回这个新对象
构造函数里面的属性和方法叫成员 成员分为实例成员和静态成员
实例成员就是在构造函数内部通过this添加的成员 实例成员只能通过实例化的对象来访问 不能通过构造函数来访问实例成员
静态成员 在构造函数本身添加的成员 静态成员只能通过构造函数来访问
<script>
function Persion(name,age){
this.name = name
this.age = age
this.mover = function(){
console.log("三生三世十里桃花")
}
}
let dlrb = new Persion("迪丽热巴",24)
console.log(dlrb.name) //name age 都是实例成员
console.log(Persion.name)//访问不到
Persion.sex="女"
console.log(Persion.sex)
console.log(dlrb.sex) //访问不到
</script>
构造函数原型 prototype
构造函数通过原型分配的函数是所有对象所共享的 每一个函数都有一个prototype属性
原型就是一个对象 也称为prototype为原型对象 用来共享方法
<script>
function Persion(name,age){
this.name = name
this.age = age
this.movie = function(){
console.log("三生三世十里桃花")
}
}
let dlrb = new Persion("迪丽热巴",24)
console.log(dlrb.name) //name age 都是实例成员
console.log(Persion.name)//访问不到
Persion.sex="女"
console.log(Persion.sex)
console.log(dlrb.sex) //访问不到
let ym = new Persion("杨幂",24)
//浪费内存 dlrb ym movie都开辟了一个新的内存空间
console.log(dlrb.movie==ym.movie) //false
Persion.prototype.marriage = function(){
console.log("我们都是单身狗")
}
console.log(dlrb.marriage==ym.marriage)
</script>
对象身上系统自己添加一个__proto__指向构造函数的原型对象
constructor构造函数
对象原型(__proto__)和构造函数(prototype)原型对象里面都有一个属性constructor属性,constructor我们称为构造函数,因为它指回构造函数本身。
关系图