文档章节

javascript设计模式-原型模式(prototype pattern)

osmos
 osmos
发布于 2015/03/13 17:57
字数 229
阅读 20
收藏 1

简单的说就是基于一个创建好的对象作为一个模板(原型)来创建其他的对象。

通过Object.create()实现方式

// 1) Object.create(prototypeObject)
var someCar = {
    drive: function() {},
    name: 'Mazda 3' 
};
var anotherCar = Object.create(someCar);


// 2) Object.create(prototypeObject, otherProperties)
var vehicle = {
    getModel: function () {
        console. log('The model of this vehicle is..' + this.model);
    }
};
var car = Object. create(vehicle, {
    'id' : {
        value: MY_GLOBAL.nextId(),
        enumerable: true
    },
    'model' : {
        value: 'Ford' ,
        enumerable: true
    }
});

备选实现方式

var vehiclePrototype = {
    init: function (carModel) {
        this.model = carModel;
    },
    getModel: function () {
        console. log('The model of this vehicle is..' + this. model);
    }
};
function vehicle(model) {
    // 创建构造函数
    function F() {};
    // 通过设置构造函数的原型属性来连接原型对象
    F.prototype = vehiclePrototype;
    // 使用构造函数创建对象
    var f = new F();
    // 初始化对象,这里不是原型设计模式部分
    f.init(model);
    // 返回创建好的对象 
    return f;
}
var car = vehicle('Ford Escort');
car.getModel();

不包含初始化代码的最简实现

var beget = (function () {
    function F() {}
    return function (proto) {
        F.prototype = proto;
        return new F();
    };
})();


© 著作权归作者所有

osmos
粉丝 0
博文 13
码字总数 1752
作品 0
闵行
高级程序员
私信 提问
JavaScript 设计模式解析【1】——创建型设计模式

工厂模式 工厂模式是用来创建对象的一种设计模式。 它不会暴露创建对象的具体逻辑,而是将逻辑封装在一个函数中,那么这个函数便成为了工厂,同时根据抽象程度的不同分为、 简单工厂模式 通过...

Reaper622
09/30
0
0
[译] 你需要知道的7个JavaScript设计模式

原文地址 设计模式在JavaScript中用于在JavaScript的Web项目中解决一些常见问题的可重复解决方案。 简介 JavaScript设计模式是非常适合作为一种模式去提供问题的解决方案,但这并不能代表可以...

金刚小仓
09/30
0
0
Javascript常用的设计模式

楔子 本文主要介绍面向对象中的单例模式、工厂模式、构造函数模式和原型链模式 单例模式 对象数据类型的作用:把描述同一个事物(同一个对象)的属性和方法放在一个内存空间下,起到了分组的...

人心思动
2018/06/01
0
0
《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们...

嗨呀豆豆呢
2018/12/30
0
0
《JavaScript设计模式与开发实践》最全知识点汇总大全

系列文章: 《JavaScript设计模式与开发实践》基础篇(1)—— this、call 和 apply 《JavaScript设计模式与开发实践》基础篇(2)—— 闭包和高阶函数 《JavaScript设计模式与开发实践》模式...

嗨呀豆豆呢
01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
44分钟前
3
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
4
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部