zoukankan      html  css  js  c++  java
  • Prototype in JavaScript

    声明 本文旨在入门,简单了解下何为prototype & __proto__

    原型对象

    我们创建每个函数都有个prototype(原型)属性,该属性是一个指针,指向一个对象,而这对象的用途是包含可以由特定类型的所有实例共享的属性和方法。(原型模式)

    其中所提及的对象即是我今天所要说的原型对象。

    function Person() {
    };
    Person.prototype.name = 'Jack';
    Person.prototype.say = function(){
      console.log('say hi');
    }
    var p = new Person();
    p.say();
    console.log(p.name);
    

    这是一段原型模式创建对象的demo。
    其中Person.prototype指向原型对象,而Person.prototype.constructor指向Person。Person 的每个实例都有个内置的属性[[Prototype]] (也就是平日里熟知的Ff 、Safari以及Chrome为了方便查看对象原型而提供的非标准的‘__proto__’访问器,当然既然是内置的,自然不建议使用),该属性又都指向Person.prototype,也就是指向了原型对象。

    我们可以用张图来展示其中各对象之间的关系

    对不起,明明盗一张图就能说清的问题,我却BB了这么久。
    贴出一小段简单代码,提供答案助于消化

    function Person() {
    };
    var p = new Person();
    console.log(p.__proto__);
    console.log(Person.prototype);
    console.log(p.constructor.prototype);
    console.log(p.__proto__ === Person.prototype);
    

    Key:

    才疏学浅,初读《JavaScript高级程序设计》,作此笔记

  • 相关阅读:
    python中if __name__ == '__main__': 的解析
    CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
    哈希表详解
    使用RSS提升DPDK应用的性能(转)
    DPDK内存管理-----rte_mbuf(转)
    DPDK内存管理-----(二)rte_mempool内存管理
    DPDK内存管理(1)(转)
    Scala + IntelliJ IDEA
    什么是消息队列中间件
    微信小程序直播
  • 原文地址:https://www.cnblogs.com/zhaoww/p/5343205.html
Copyright © 2011-2022 走看看