您的位置:首页 > Web前端 > JavaScript

js 设计模式学习(3)

2017-02-22 21:31 281 查看
原型模式

将可复用的、可共享的、耗时大的从基类中提取出来,然后放在其原型中,然后子类通过组合继承或者寄生组合式继承将方法和属性继承下来。

1 //图片轮播类
2 var LoopImages = function (imgArr, container) {
3     this.imgArray = imgArr;
4     this.container = container;
5 }
6 LoopImages.prototype = {
7     createImage: function () {
8         console.log('creat img function');
9     },
10     changeImage: function () {
11         console.log('change img function');
12     }
13 }
14
15 var SlideLoopImg = function (imgArr, container) {
16     //构造函数继承图片轮播类
17     LoopImages.call(this, imgArr, container);
18 }
19
20 SlideLoopImg.prototype = new LoopImages();
21 //重写继承切换下一张图片的方法
22 SlideLoopImg.prototype.changeImage = function () {
23     console.log('SlideLoopImg Change Images');
24 }


原型继承

通过prototypeExtend创建的是一个对象,我们无需再去NEW新的实例对象。

1 function prototypeExtend() {
2     var F = function () { },
3         args = arguments,
4         i=0,
5         len = args.length;
6
7     for (; i < len; i++) {
8         for (var j in args[i]) {
9             F.prototype[j] = args[i][j];
10         }
11     }
12
13     return new F();
14 }
15
16 var penguin = prototypeExtend({
17     speed: 20,
18     swim: function () {
19         console.log('游泳:' + this.speed);
20     },
21     run: function (speed) {
22         console.log('奔跑:' + speed);
23     },
24     jump: function () {
25         console.log('跳跃');
26     }
27 })
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: