一.什么是原型对象?
任何函数在声明的时候,系统会自动帮你创建一个对象,称之为原型对象
二.原型对象的作用
原型对象可以解决js中内存浪费和变量污染的情况。
三.原型对象的三个属性
构造函数、原型对象和实例对象
prototype 属于构造函数,指向对象原型(解决函数内存浪费+变量污染)
proto_ 属于实例对象,指向原型对象(让实力对象直接访问原型的成员)
constrotor 属于原型对象,指向构造函数(可以让实例对象知道自己是被哪个构造函函数创建出来的)
1.构造函数
functon Person(name,age){
this.name = name
this.age = age
}
2.原型对象
Person.prototype.eat = function () {
console.log('吃东西')
}
Person.prototype.learn = function () {
console.log('学习')
}
console.log(Person.prototype.constructor)
3.实例对象
let p1 = new Person('张三', 20)
console.log(p1)
如何验证构造函数,原型对象和实例对象三者之间的关系
console.log(p1.__proto__.constructor) //打印结果为Person
console.log(Person.prototype === p1.__proto__) //打印结果为true