本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-12-15
原型模式(Prototype):是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。
原型对象的提出就是解决复用的问题,当一个构造函数足够复杂,方法最够多,每次使用new的时候就会造成每一个实例对象上都有着相同的方法和共享属性。而原型模式则将这些方法放到能够共享的原型对象上。
// 图片轮播类
var LoopImages = function(imgArr, container) {
this.imagesArr = imgArr;
this.container = container;
}
LoopImages.prototype = {
// 创建轮播图片
createImage() {
console.log('LoopImages createImage function')
},
// 切换
changeImage() {
console.log('LoopImages changeImage function')
},
getImgLength() {
return this.imagesArr.length;
}
}
// 上下滑动图片轮播
var SlideLoopImages = function(imgArr, container) {
LoopImages.call(this, imgArr, container);
}
SlideLoopImages.prototype = new LoopImages();
// 重写
SlideLoopImages.prototype.changeImage = function() {
console.log('SlideLoopImages changeImage function');
}
var s = new SlideLoopImages(['1.png'], '#container')
s.changeImage(); // SlideLoopImages changeImage function
console.log(s.getImgLength()); // 1, 从原型对象上“共享”来的getImgLength方法
原型模式可以让多个对象分享同一个原型对象的属性和方法,这也是一种继承方式,不过这种继承的实现是不需要创建的,而是将原型对象分享给那些继承的对象。