demo
function Fun(){}
var foo = new Fun();
foo.__proto__ === Fun.prototype

摘要

1、js本身不提供类实现,es6引入了class,但只是语法糖。通过原型这种机制,JavaScript 中的对象从其他对象继承功能特性。
2、对象有__proto__属性,如foo.__proto__指向foo的原型。
3、函数有prototype属性,Fun.prototype指向构造函数Fun创建的实例对象的原型。
4、foo.__proto__.constructor === Fun === Fun.prototype. constructor。 //constructor 属性返回对创建此对象的数组函数的引用
5、实例和原型的关系: 当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止(最顶层为null),如foo.__proto__、foo.__proto__.__proto__···,即通过__proto__在实例与原型实现的链状结构统称为原型链。
6、获取原型对象的三种方法:
obj.__proto__  //限于浏览器
obj.constructor.prototype 
Object.getPrototypeOf(obj) 
上面三种方法之中,前两种都不是很可靠。
注释
  原型:每个js对象(除null外)在创建的时候就会与之关联另一个对象(原型),并会继承该对象的属性和方法。

js原型与继承的更多相关文章

  1. js原型链+继承 浅析

    名称:    prototype--原型对象    __proto__--属性 原型链与继承网上搜索定义,看起来挺绕的 .先说继承: 所有的对象实例都可以共享原型对象包含的属性和方法  例如一个实例A ...

  2. [js]js原型链继承小结

    这是之前总结的, 发现有很多的毛病,就是重点不突出,重新翻看的时候还是得耗费很长时间去理解这玩意. js中的继承 js中什么是类 1,类是函数数据类型 2.每个类有一个自带prototype属性 pr ...

  3. 彻底弄懂JS原型与继承

    本文由浅到深,循序渐进的将原型与继承的抽象概念形象化,且每个知识点都搭配相应的例子,尽可能的将其通俗化,而且本文最大的优点就是:长(为了更详细嘛). 一.原型 首先,我们先说说原型,但说到原型就得从函 ...

  4. js原型链继承的傻瓜式详解

    本文争取用最简单的语言来讲解原型链继承的OOP原理 0.如果对原型继承还没有大致了解,完全一头雾水,请先阅读 <JavaScript高级程序设计>第六章最后部分的寄生组合式继承 或者_廖雪 ...

  5. 【JS】深入理解JS原型和继承

    前言 在学习JS中的原型,原型链,继承这些知识之前,我们先学习下基础知识:函数和对象的关系.  我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来.但是函数和对象的关系并不 ...

  6. JS原型和继承

    //所有的函数都有一个prototype属性 function aa() { } console.info(aa.prototype); //这个prototype属性引用了一个对象,即原型,初始化时 ...

  7. JS原型链继承

    继承普通版 继承逻辑上都差不多,普通版调用方式比较繁琐,不利于反复大量的使用: (function (){ //创建一个人员类 function Person(name){ this.name = n ...

  8. js原型链继承及调用父类方法

    方法1: var Parent= function () { }; Parent.prototype.process = function(){ alert('parent method'); }; ...

  9. 一个小实例理解js 原型和继承

    导语1:一个构造函数的原型对象,其实就是这个构造函数的一个属性而已,属性名叫prototype,值是一个对象,对象中有一些属性和方法,所以每个构造函数的实例对象都拥有这些属性和方法的使用权. 导语2: ...

随机推荐

  1. mysql windows 安装 错误

    1 免压缩版安装会经常提示需要c++库,还是要用安装版. 2 安装板默认在c盘,修改目录要注意目录权限. 3 要把datadir的data目录全部考到新目录下.

  2. 【原创】大数据基础之Logstash(5)监控

    有两种方式来监控logstash: api ui(xpack) When you run Logstash, it automatically captures runtime metrics tha ...

  3. PHP提取页面第一张图为缩略图的代码

    <?php $p = '/<img.*?src=[\'|\"](.+?)[\'|\"].*?>/i'; preg_match_all($p,$str,$match ...

  4. 【转】Python——plot可视化数据,作业8

    Python——plot可视化数据,作业8(python programming) subject1k和subject1v的形状相同 # -*- coding: utf-8 -*- import sc ...

  5. oracle wallet使用与维护

    oracle wallet使用与维护2015年05月26日 17:58:55 SilenceRiver 阅读数:1614oracle wallet使用与维护---oracle无密码登录分类: Orac ...

  6. 主席树——求区间[l,r]不同数字个数的模板(向左密集 D-query)

    主席树的另一种用途,,(还有一种是求区间第k大,区间<=k的个数) 事实上:每个版本的主席树维护了每个值最后出现的位置 这种主席树不是以权值线段树为基础,而是以普通的线段树为下标的 /* 无修改 ...

  7. memcpy一种实现方法

    #include<stdio.h> #include<stdlib.h> void* memncpy(void* dest, const void* src, int coun ...

  8. CentOS7像外部163邮箱发送邮件

    我们在运维过程中,为了随时了解服务器的工作状态,出现问题随时提醒,像个人邮箱发送邮件是必须的,但是刚刚安装好的系统是无法发送邮件的.需要们进行一些配置和程序的安装,我安装完系统后,自带mail12.5 ...

  9. [转] Vue中异步错误处理

    一般在一个项目开始之前,我们一般会对现有的框架做一定功能上的丰富,比如对ajax请求功能的二次封装,封装的功能可能包含了:通用错误处理,请求过滤,响应过滤等等.如果我们封装的函数叫request,那么 ...

  10. PHP删除目录及目录下所有文件

    /** * 删除目录及目录下所有文件或删除指定文件 * @param str $path 待删除目录路径 * @param int $delDir 是否删除目录,1或true删除目录,0或false则 ...