• 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高级程序设计》,作此笔记

  • 相关阅读:
    Java反射机制DOME
    Contos7 装bcm4312无线网卡驱动
    windows8.1+centos7双系统(装完centos后无win8引导)
    request+response
    HTTP协议+servlet配置
    类加载和反射
    线程池+线程安全
    IO流之Properties(String键值对)+序列流+打印流+commons-IO(最终流程)
    IO流之字节流 +字符流 (复制文件)
    IO流
  • 原文地址:https://www.cnblogs.com/zhaoww/p/5343205.html
Copyright © 2020-2023  润新知