美文网首页
语言之魂---- 原型模式 2022-11-18

语言之魂---- 原型模式 2022-11-18

作者: 前端Tree | 来源:发表于2022-11-17 23:41 被阅读0次
/**
 * 原型模式概念
 * 原型模式就是将原型对象指向创建对象的类,使这些类共享原型对象的方法与属性。
 * 当然javascript是机遇原型连实现对象之间的继承,这种继承是基于一种对属性或者方法对共享,而不是对属性和方法对复制。
 */

// 案例一:创建一个焦点图也就是轮播图

// 图片轮播类
var LoopImages = function(imgArr,container) {
    this.imagesArray = imgArr; // 轮博图片数组
    this.container = container; // 轮博图片容器
    this.createImage = function() {}; // 创建轮播图片
    this.changeIamge = function() {}; // 切换下一张图片
}

// 创建一个左右切换箭头的例子

// 上下滑动切换类
var SlideLoopImg = function(imgArr,container) {
    // 构造函数继承图片轮播类
    LoopImages.call(this,imgArr,container);
    // 重写继承的切换下一张图片的方法
    this.changeIamge = function() {
        console.log('SlideLoopImg chengImage function')
    }
}

// 渐隐切换类
var FadeLoopImg = function (imgArr,container,arrow) {
    LoopImages.call(this,imgArr,container)
    // 切换箭头私有变量
    this.arrow = arrow;
    this.changeIamge = function() {
        console.log('FadeLoopImg changeImage function')
    }
}

// 测试一下
// 我们创建一个显隐轮播图片测试实例很容易
// 实例化一个渐隐切换图片类
var fadeImg = new FadeLoopImg([
    '01.jpg',
    '02.jpg',
    '03.jpg',
    '04.jpg',   
],'slide',['left,jpg','right,jpg'])
// fadeImg.changeIamge();

// 以上方法将属性都写在基类的构造函数里会有一些问题,就是每次创建子类,都要做一些重复性的动作。
// 原型模式就是将可复用,可共享的,耗时大的从基类中提取出来,然后放在其原型中,然后子类通过组合继承或者寄生组合式继承而
// 将方法和属性继承写在,对于子类中哪些需要重写的方法进行重写,这样子类创建的对象即具有子类的属性和方法也共享了基类的原型方法。

// 最优解决方案:
// 实例代码

// 图片轮播类
var LoopImages = function(imgArr,container) {
    this.imagesArray = imgArr; // 图片轮播数组
    this.container = container
}
LoopImages.prototype = {
    // 创建轮播图片
    createImage: function() {
        console.log('LoopImages createIamge function')
    },
    // 切换下一张图片
    changeIamge: function () {
        console.log('LoopImages changeIamge function');
    }
}
// 上下滑动切换类

var SlideLoopImg = function (imgArr, container) {
    // 构造函数继承图片轮播类
    LoopImages.call(this, imgArr, container)
} 
SlideLoopImg.prototype = new LoopImages(); // 不知道为什么要写这一步?
// 充血继承的切换下一张图片方法
SlideLoopImg.prototype,changeIamge = function () {
    console.log('SlideLoopImg chengImage function')
}
// 渐隐切换类
var FadeLoopImg = function (imgArr, container, arrow) {
    LoopImages.call(this, imgArr, container)
    // 切换箭头私有变量
    this.arrow = arrow
}
FadeLoopImg.prototype = new LoopImages(); // 不知道为什么要写这一步?
FadeLoopImg.prototype.changeIamge = function() {
    console.log('FadeLoopImg changeImage function');
}

var fadeImg = new FadeLoopImg([
    '01.jpg',
    '02.jpg',
    '03.jpg',
    '04.jpg',   
],'slide',['left,jpg','right,jpg'])
fadeImg.changeIamge();

// 测试用例
console.log(fadeImg.container);
fadeImg.changeIamge()



相关文章

  • 学习JavaScript设计模式——原型模式

    原型模式——语言之魂 原型模式:用原型实例指向创建对象的类,使用于创建新的对象的类共享原型对象的属性以及方法。(当...

  • js设计模式(四)语言之魂-原型模式

    原型模式 原型模式:用原型实例指向创建的类,使创建的对象的类共享原型对象的属性和方法.把消耗较大的方法放在基类中。...

  • 第3章 创建型模式-原型模式

    一、原型模式简介 二、原型模式的优点 ■ 三、原型模式的使用场景 ■ 四、原型模式的实例

  • 设计模式之原型模式(Prototype 模式)

    引入原型模式 原型模式的实例 为什么需要使用原型模式 引入原型模式 如果读者很熟悉javascript的话,对原型...

  • 初始设计模式之原型模式

    原型模式是什么? 原型模式怎么用?浅拷贝深拷贝 原型模式再理解 一、原型模式是什么? ​ 原型模式是一种创建型设计...

  • 设计模式之原型模式(创建型)

    [TOC] 模式定义 原型模式(Prototype Pattern):原型模式是提供一个原型接口,提供原型的克隆,...

  • 原型模式C++

    原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式结构图 原型模式基本代码 原型...

  • 设计模式:原型

    原型模式基本介绍原型模式的实现源码中的原型模式记录 原型模式基本介绍 定义:用原型实例指定创建对象的种类,并通过复...

  • js集成

    原始继承模式--原型链 2:借用构造函数 3:共享构造原型 4:圣杯模式原型链; 构造函数; 共享原型; 圣杯模式...

  • 关于JavaScript创建对象的多种方式

    JavaScript创建对象的方法 工厂模式 构造函数模式 原型模式 组合使用构造函数模式和原型模式 动态原型模式...

网友评论

      本文标题:语言之魂---- 原型模式 2022-11-18

      本文链接:https://www.haomeiwen.com/subject/vurmxdtx.html