原型模式的用法:
每个函数都有一个prototype(原型)属性,这个属性指向一个对象,即原型对象.
--prototype的作用是:所有添加到prototype中的属性和方法都将被所有对象实例共享。(继承)
例子:
function Cat(){
Cat.prototype.name = '折耳猫';
Cat.prototype.age = 3;
Cat.prototype.sayHi = function(){
console.log('大家好,我是' + Cat.prototype.name);
}
}
var cat1 = new Cat();
var cat2 = new Cat();
cat1.sayHi();
console.log(cat1);
console.log(cat1.name);
console.log(cat1.sayHi === cat2.sayHi);
console.log(cat1.age === cat2.age);
原型模式的问题:
原型模式省略了为构造函数传递参数这一环节,结果所有实例都将取得相同的属性值。
prototype中的属性和方法共享,对于函数来说非常适合,但属性共享,问题可能很严重!