zoukankan      html  css  js  c++  java
  • JavaScript的原型模式

    原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。

    http://www.cnblogs.com/TomXu/archive/2012/04/16/2436460.html

    http://www.cnblogs.com/silymer/archive/2012/11/02/2751803.html

    JS原型对象:所有实例都会共享它里面的属性和方法

    原型(prototype),是 JavaScript 特有的一个概念,通过使用原型,JavaScript 可以建立其传统 OO 语言中的继承,从而体现对象的层次关系。JavaScript 本身是基于原型的,每个对象都有一个 prototype 的属性来,这个 prototype 本身也是一个对象,因此它本身也可以有自己的原型,这样就构成了一个链结构。

    访问一个属性的时候,解析器需要从下向上的遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为 null 的对象(JavaScript 的基对象 Object 的构造器的默认prototype 有一个 null 原型),如果此对象仍没有该属性,则返回 undefined。

    下面我们看一个具体的例子:
    //声明一个对象base
    function Base(name){
        this.name = name;
        this.getName = function(){
            return this.name;
        }
    }
    //声明一个对象child
    function Child(id){
        this.id = id;
        this.getId = function(){
            return this.id;
        }
    }
    //将child的原型指向一个新的base对象
    Child.prototype = new Base("base");
    //实例化一个child对象
    var c1 = new Child("child");
    //c1本身具有getId方法
    print(c1.getId());
    //由于c1从原型链上"继承"到了getName方法,因此可以访问
    print(c1.getName());

    得出结果:
    child
    base

    由于遍历原型链的时候,是有下而上的,所以最先遇到的属性值最先返回,通过这种机制可以完成重载的机制。

    prototype的概念

    prototype是构造函数的一个属性, 该属性指向一个对象。 而这个对象将作为该构造函数所创建的所有实例的基引用(base reference), 可以把对象的基引用想像成一个自动创建的隐藏属性。 当访问对象的一个属性时, 首先查找对象本身, 找到则返回; 若不, 则查找基引用指向的对象的属性(如果还找不到实际上还会沿着原型链向上查找, 直至到根)。 只要没有被覆盖的话, 对象原型的属性就能在所有的实例中找到。

  • 相关阅读:
    leetcode刷刷刷
    素数问题
    TCP/IP详解(整理)
    关于区块链应用方向与前景的一些思考
    设计模式
    面经中的各种问题汇总
    基于消逝时间量的共识机制(POET)
    c++语言知识点汇总
    二叉树前中后/层次遍历的递归与非递归形式(c++)
    layui表格搜索数据登录失效后的处理
  • 原文地址:https://www.cnblogs.com/xiao-hei/p/3898735.html
Copyright © 2011-2022 走看看