本文介绍 JavaScript 中的原型模式。通过将属性和方法直接挂载到构造函数对象的 prototype 上,实现所有实例共享同一个方法,从而节省内存。文章指出该模式的主要缺点是无法通过参数为每个实例初始化不同的属性值,适用于方法统一但无需独立状态的场景。
JavaScript 原型模式实现
2、原型方式
代码如下:
/**
* Person类:定义一个人,有个属性name,和一个getName方法
*/
function Person(){}
Person.prototype.name = "jack";
Person.prototype.getName = function() { return this.name;}将类的属性和方法全部定义在 prototype 对象上。
创建几个对象进行测试:
代码如下:
var p1 = new Person();
var p2 = new Person();
console.log(p1.getName());//jack
console.log(p2.getName());//jack从输出结果可以看出,两个实例获取到的 name 均为 jack。这表明原型模式存在一个明显缺点:无法通过构造函数参数来初始化每个对象实例的不同属性(通常不同实例的属性值应不同)。其优点在于所有实例共享同一个 getName 方法(相比构造函数模式),避免了为每个实例重复创建方法而造成的内存浪费。