构造函数方法很好用,但是存在浪费内存的问题。
function Star(uname,age){
this.uname = uname;
this.age = age;
this.sing = function(){
console.log('我会唱歌');
}
}
var ldh = new Star('刘德华',18);
var zxy = new Star('张学友',19);
构造函数原型prototype
JavaScript规定,每一个构造函数都有一个prototype属性,指向一个对象。注意这个prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有。
我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法。
function Star(uname,age){
this.uname = uname;
this.age = age; //公共属性
}
Star.prototype.sing = function(){
console.log('我会唱歌'); //公共方法
}
var ldh = new Star('刘德华',18);
var zxy = new Star('张学友',19);
ldh.sing();
zxy.sing();
一般情况下,我们的公共属性定义到构造函数里面,公共的方法我们放到原型对象上。
小总结:
1.原型是什么?
一个对象,我们称prototype为原型对象
2.原型的作用是什么?
共享方法