美文网首页
原型模式与Javascript

原型模式与Javascript

作者: bakaqian | 来源:发表于2016-11-27 22:45 被阅读73次

原型模式


“使用特定原型实例来创建特定种类的对象,并且通过拷贝原型来创建新的对象”。
在创建比较复杂的对象的时候,使用ctrl+c和ctrl+v固然是一种方法,但是太粗暴,除非你想吹嘘你写代码的行数。

使用原型模式可以更方便的创建对象,通过编写一个clone函数,将创建对象的细节隐藏,就可以创建一个和被克隆对象一样的对象。比如想要生成大量小怪的时候,通过一个小怪的模板,就可以优雅地实现了~

原型语言


“面向对象编程”并不等同于“类”,基于原型的语言,也可以说是面向对象的,或者说是“真·面向对象”,因为它不管是属性和方法,都是在对象中的,一个实例包含状态和行为。通过对象去创建对象,这就是原型的世界。

基于类的语言
基于原型的语言

原型语言的简单定义:

  1. 只有对象,没有类;对象继承对象,而不是类继承类。
  1. “原型对象”是核心概念。原型对象是新对象的模板,它将自身的属性共享给新对象。一个对象不但可以享有自己创建时和运行时定义的属性,而且可以享有原型对象的属性。
  2. 每一个对象都有自己的原型对象,所有对象构成一个树状的层级系统。root节点的顶层对象是一个语言原生的对象,只有它没有原型对象,其他所有对象都直接或间接继承它的属性。

Javascript


Javascript是基于原型的语言,在javascript中,每个对象可以有任意属性集合,它们可以是属性和方法,一个对象也能拥有其他对象。

和上面讲的稍有不同的是,javascript中没有一个方法可以用来克隆对象,如果你要在javascript中定义创建对象的方法,首先需要创建这样一个构造函数:

function Person(name) {
    this.name = name;
}

当然还需要定义一些行为:

Person.prototype.getName = function(){
    return this.name;
}

然后用下面的语法创建新的对象并初始化对象相应的属性:

var person = new Person("魔法少女");

当使用new关键字创建对象时,做了以下几件事:

  • 调用Person方法,创建一个空对象,并且把this指针绑定到这个新创建的对象上。
  • 创建一个指向Person.prototype的指针。
  • Person方法给this对象添加了name属性。
  • 将这个初始化属性的对象返回。

最后person就是一个包含原型对象和自身属性的一个对象了,当调用person.getName()时,最自动调用原型对象的对应方法。

相关文章

  • 原型和原型链篇

    原型和原型链 1.理解原型设计模式以及JavaScript中的原型规则 原型设计模式JavaScript是一种基于...

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

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

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

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

  • JavaScript创建对象

    JavaScript中创建对象有以下七种方式: 工厂模式构造函数模式原型模式构造函数和原型组合模式动态原型模式寄生...

  • 原型模式与Javascript

    原型模式 “使用特定原型实例来创建特定种类的对象,并且通过拷贝原型来创建新的对象”。在创建比较复杂的对象的时候,使...

  • Javascript 基于原型的面向对象系统编程

    Javascript是使用克隆的原型模式。 1. 原型编程的规则 所有的数据都是对象(javascript中不是所...

  • JavaScript 原型、原型链与原型继承

    原型,原型链与原型继承 用自己的方式理解原型,原型链和原型继承 javascript——原型与原型链 JavaSc...

  • 原型和原型链

    一、理解原型设计模式以及 JavaScript 中的原型规则 设计模式 工厂模式 在函数内创建一个对象,给对象赋予...

  • 原型和继承 -- 总结

    原型模式 原型模式在《JavaScript高级程序设计》中的定义: 我们创建的每个函数都有一个prototype(...

  • 7.第二篇:第7章 原型模式

    本文摘自 《JavaScript 设计模式》张容铭 著 版权归原作者所有 原型的拓展 原型继承

网友评论

      本文标题:原型模式与Javascript

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