组合模式解决原型创建对象传参和共享难题

//组合构造函数+原型模式
function Box(name,age){            //保持独立的用构造函数
    this.name = name;
    this.age = age;
    this.family = [‘哥哥‘,‘姐姐‘,‘妹妹‘]
};

Box.prototype = {                //保持共享的用原型
    constructor:Box,
    run:function(){
        return this.name + this.age + ‘运行中...‘;
    }
};

var box1 = new Box(‘Lee‘,100);
box1.family.push(‘弟弟‘);

var box2 = new Box(‘Jack‘,200);

alert(box1.family);
alert(box2.family);        //引用类型没有使用原型,所以没有共享

使用这种混合模式很好的解决了传参和引用共享的大难题,是创建对象比较好的方法。

组合模式解决原型创建对象传参和共享难题

时间: 2024-08-10 15:12:09

组合模式解决原型创建对象传参和共享难题的相关文章

动态原型模式,解决原型创建对象的时候未封装问题

//动态原型模式 function Box(name,age){ this.name = name; this.age = age; this.family = ['哥哥','姐姐','妹妹']; if(typeof this.run != 'function'){ //判断this.run是否存在 Box.prototype.run = function(){ return this.name + this.age + '运行中...'; }; } } //原型的初始化,只要第一次初始化就可以

javascript学习笔记10(基于组合与动态原型创建对象)

基于组合与动态原型创建对象 方法一:在外部设置prototype <script type="text/javascript">/** * 为了解决原型所带来的问题,此处需要通过组合构造函数和原型来实现对象的创建 * 将属性在构造函数中定义,将方法在原型中定义 * 这种有效集合了两者的优点,是目前最为常用的一种方式 */    function Person(name,age,friends){        //属性在构造函数中定义        this.name =

vue:解决使用param传参后,再次刷新页面会新增一个原有的tab

问题:在最近的项目中,我通过传递不同的参数,复用同一组件进行渲染,然而意外出现一个bug,就是当我重新刷新该页面时,会新增一个tab 原来的: 刷新页面后: 查阅资料后,发现该现象是由于通过params进行传递的参数引起的,params进行传参后再次刷新页面,参数丢失,导致fullpath不一致,从而新增了页面(而我使用的d2admin基于element-ui第三方框架) 解决方案:将params方式传参改为使用query传参,这样参数就不会因为刷新而丢失 参考: https://juejin.

设计模式@第12章:组合模式

第12章:组合模式 一.看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系.如图: ----------清华大学-------------- ----------计算机学院------------ 计算机科学与技术 软件工程 网络工程 ---------信息工程学院----------- 通信工程 信息工程 二.传统方案解决学校院系展示(类图) 传统方案解决学校院系展示存在的问题分析 将学院看做是学校的子类

图解Java设计模式之组合模式

图解Java设计模式之组合模式 看一个学校院系展示需求 传统方案解决学院院系展示(类图) 传统方案解决学校院系展示存在的问题分析 组合模式基本介绍 组合模式的原理类图 组合模式解决学校院系展示的应用实例 组合模式在JDK集合的源码分析 组合模式的注意事项和细节 看一个学校院系展示需求 编写程序展示一个学校院系结构 :需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系.如图 : 传统方案解决学院院系展示(类图) 传统方案解决学校院系展示存在的问题分析 1)将学院看

设计模式C++实现——组合模式

模式定义: 组合模式允许你将对象组合成树形结构来表现"整体/部分"层次结构.组合能让客户以一致的方式处理个别对象以及对象组合. 这个模式能够创建一个树形结构,在同一个结构中处理嵌套菜单和菜单项组.通过菜单和项放在相同结构中,我们创建了一个"整体/部分"层次结构,即由菜单和菜单项组成的对象树.使用组合结构,我们能把相同的操作应用在组合和个别对象上.换句话说,在大多数情况下,我们可以忽略对象组合和个别对象之间的差别. 模式结构: Component: 为组合中的对象声明

&lt;jsp:param&gt;传参乱码问题

在添加参数的界面添加<%request.setCharacterEncoding("UTF-8");%> 实例代码: login_confirm.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri=

小程序路由传参的时候出现数据丢失

在写把操作的答案通过路由传参的形式传到下一个页面的时候,在下一个页面获取的时候数据被截取了 解决办法 使用  encodeURIComponent        进行加密 然后再另外一个页面获取的时候使用     decodeURIComponent 进行解码 这样就解决了路由传参时数据丢失的情况了 原文地址:https://www.cnblogs.com/jeremy-o/p/9934468.html

JS创建对象模式及其对象原型链探究(五):组合使用构造函数模式和原型模式

组合使用构造函数模式和原型模式 构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性. 创建自定义类型的最常见方式,就是组合使用构造函数模式和原型模式. 1.创建对象 // 组合使用构造函数模式和原型模式 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.friend = ["Jenny", "Court"]; } Person.p