原型对象:
// 什么是原型对象?[prototype]
//a): 概念: prototype叫原型,prototype是每一个构造函数身上的一个属性且是以对象形式存在的
//b): 验证prototype是不是构造函数身上的一个属性且是不是一个对象
// function Fn() {
// this.uname = 'zs';
// }
// //打印构造函数Fn
// console.dir(Fn);
原型对象prototype的作用是什么?
//a): 原型对象prototype就是用来给构造函数设置公共方法,解决内存泄漏
//b): 验证构造函数中的方法是否会导致内存浪费(泄漏)
//c): 构造函数中的方法,并不是真正意义上的共享方法,每创建一个对象,都会在内存中开辟一个新的空间
//d): 如果解决这种可耻的浪费行为呢? 通过原型对象prototype解决
function Fn(uname) {
this.uname = uname;
this.eat = function() {
console.log('正在吃饭中');
}
}
let zs = new Fn('张三');
let ls = new Fn('李四');
zs.eat();
ls.eat();
如果通过原型对象设置真正的共享方法!!!
function People(uname) {
this.uname = uname;
}
// 通过原型对象设置公共方法
People.prototype.eat = function() {
console.log('正在吃饭...');
}
let zs = new People('张三');
let ls = new People('李四');
//验证: 对象能否调用eat公共的方法
zs.eat();
ls.eat();
//验证: 现在的eat方法是不是同一个方法,同时解决了内存浪费的问题
console.log(zs.eat == ls.eat);