js设计模式-原型模式

1.Object.create(obj,[]) 创建一个以obj为原型的对象。

function res4(){};
 res4.prototype=Object.create(myobj, {
  // foo会成为所创建对象的数据属性
  foo: { writable:true, configurable:true, value: "hello" },
  // bar会成为所创建对象的访问器属性
  bar: {
    configurable: false,
    get: function() { return 10 },
    set: function(value) { console.log("Setting `o.bar` to", value) }
}})

原型模式 是指 拷贝这些原型创建新的对象。

浅拷贝,深拷贝,object.create()创建。

深拷贝。

  function clone2(obj){
    var ret,k,b;
    if((b=(obj instanceof Array)) || obj instanceof Object){
      ret=b?[]:{};
      for(k in obj){
        ret[k]=clone2(obj[k]);
      }
    }else{
      ret=obj
    }
    return ret;
  }

可以用es6代替:

var o = Object.create(myobj);
时间: 2024-10-14 06:49:50

js设计模式-原型模式的相关文章

[js]js设计模式-原型模式

构造函数模型- 对象的属性和方法每人一份 function createJs(name, age) { this.name = name; this.age = age; this.writeJs = function () { console.log(this.name, this.age) } } p1 = new createJs("maotai", 22); p1.writeJs(); p2 = new createJs("maotai2", 23); p2

谈谈设计模式~原型模式(Prototype)

返回目录 原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例(clone),而不是新建(new)实例.被复制的实例就是我们所称的“原型”,这个原型是可定制的. 原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效:或者创建值相等,只是命名不一样的同类数据. 从原型模式的概念中,我们可以看到,在这个模式里,拷贝是个很重要的概念,即在不创建对象的情况下,返回一个已有对象,这就是拷贝去实现的,在面向对象的编程世界里,拷贝分为浅拷

10. 星际争霸之php设计模式--原型模式

题记==============================================================================本php设计模式专辑来源于博客(jymoz.com),现在已经访问不了了,这一系列文章是我找了很久才找到完整的,感谢作者jymoz的辛苦付出哦! 本文地址:http://www.cnblogs.com/davidhhuan/p/4248189.html============================================

炒冷饭系列:设计模式 原型模式

炒冷饭系列:设计模式 原型模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 亲爱我,孝何难:亲恶我,孝方贤. 一.什么是原型模式 Prototype模式是一种对象创建型模式,它採取复制原型对象的方法来创建对象的实例.使用 Prototype模式创建的实例,具有与原型一样的 数据. 二.原型模式的特点 1. 由原型对象自身创建目标对象.也就是说,对 象创建这一动作发自原型对象本身. 2.目标对象是原型对象的一个克隆

js设计模式——桥接模式

定义:将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化. 常用场景:在js中,桥接模式常用于事件监听器和ajax请求的解耦,以便于进行单元测试. 举个栗子 普通方法. var btn=$('#btn'); btn.on('click',function () { $.ajax({ url:'test.html', data:{ id:this.id }, dataType:'html', success:function(data){ con

[工作中的设计模式]原型模式prototype

一.模式解析 提起prototype,最近看多了js相关的内容,第一印象首先是js的原型 var Person=function(name){ this.name=name; } Person.prototype.run=function(){ alert(this.name+" is running"; } 此处的原型是js的特殊定义,在原型上定义的属性和方法所有的类进行共享. 不过设计模式中的原型模式指的是:将已有的对象作为原型,拷贝出一份具有相同属性的新的对象. 模式定义为:原型

java设计模式---原型模式

原型模式也是创建型的设计模式,通过拷贝原型创建新的对象,理解原型模式必须理解java中的浅复制和深复制.复制也称为克隆.会发生深拷贝的有java中的8中基本类型以及他们的封装类型,另外还有String类型.其余的都是浅拷贝. 浅克隆:浅克隆仅仅克隆所考虑的对象,而不克隆它所引用的对象. 深克隆:深克隆不仅克隆所考虑的对象,也克隆它所引用的对象. 它的核心是就是原型类Prototype.Prototype类需要具备以下两个条件: 实现Cloneable接口.在java语言有一个Cloneable接

java语言实现创建型设计模式—原型模式(Prototype)

一.描述 原型模式是通过一个原型对象来标明要创建的对象的类型,然后用复制这个原型对象的方法来拷贝创建更多的同类型对象.例如我们在程序的动态运行过程中有了一个对象,这个对象中包含了一系列的有效数据,我们此时需要一个和该对象完全相同的新对象,并且在拷贝之后,新旧对象之间没有任何联系,对任何一个对象的更改都不影响另一个对象. 在java中所有类都默认继承自java.lang.Object类,在这个Object类中有一个clone()方法,该方法将返回Object对象的一个拷贝. 我们让需要被拷贝的类实

PHP设计模式——原型模式

声明:本系列博客参考资料<大话设计模式>,作者程杰. 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建.它主要面对的问题是:"某些结构复杂的对象"的创建工作:由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口. 在php中,类已经实现了原