JS高阶---显式原型和隐式原型
前言:
1、函数对象即函数的prototype原型属性指向原型对象,在创建函数时便存在,默认为空Object 2、实例对象的__proto__隐式原型在实例化创建实例时产生,值等于构造函数的显式prototype原型属性的值 3、开发时程序员操作显式原型在原型prototype上添加方法,不能直接操作隐式原型__proto__(ES6之前)
大纲:

【主体】
(1)每个函数都有一个prototype原型属性,称之为显式原型属性或显式原型
(2)每个实例对象都有一个__prop__原型属性,称之为隐式原型属性或隐式原型


(3)验证
实例对象隐式原型 == 构造函数对象显式原型

共同指向原型对象。

且在创建时执行了this指向

上述结构图如下

(4)内存结构图
1、创建函数,函数名在栈空间


2、函数对象的prototype原型属性指向空对象object---原型对象,即
Fn.prototype→空object即原型对象

3、创建实例对象 fn,地址值指向Fn的实例对象

4、实例对象的__proto__属性即隐式原型

5、给原型对象增加属性(大多为方法)


最后会添加到堆内存的原型对象里,所以可以引用。
【总结】
完整流程图

.
JS高阶---显式原型和隐式原型的更多相关文章
- 02.Scala高级特性:第6节 高阶函数;第7节 隐式转换和隐式参数
Scala高级特性 1. 课程目标 1.1. 目标一:深入理解高阶函数 1.2. 目标二:深入理解隐式转换 2. 高阶函数 2.1. 概念 Scala混合了面向对象和函数式的特 ...
- 原型链 | 显示原型、隐式原型 | 构造关系constructor | instanceof
1.原型关系 prototype 显式原型:prototype 隐式原型:__proto__ 1. 每个函数function都有一个prototype,即显式原型(属性)2. 每个实例对象都有一个__ ...
- selenium-webdriver中的显式等待与隐式等待
在selenium-webdriver中等待的方式简单可以概括为三种: 1 导入time包,调用time.sleep()的方法传入时间,这种方式也叫强制等待,固定死等一个时间 2 隐式等待,直接调用i ...
- 转】C#接口-显式接口和隐式接口的实现
[转]C#接口-显式接口和隐式接口的实现 C#中对于接口的实现方式有隐式接口和显式接口两种: 类和接口都能调用到,事实上这就是“隐式接口实现”. 那么“显示接口实现”是神马模样呢? interface ...
- C# Interface显式实现和隐式实现
c#中对接口的实现方式有两种:隐式实现和显式实现,之前一直没仔细看过,今天查了些资料,在这里整理一下. 隐式实现的例子 interface IChinese { string Speak(); } p ...
- 多态设计 zen of python poem 显式而非隐式 延迟赋值
总结 1.python支持延迟赋值,但是给调用者带来了困惑: 2.显式而非隐式,应当显式地指定要初始化的变量 class Card: def __init__(self, rank, suit): s ...
- C# 数据类型转换 显式转型、隐式转型、强制转型
C# 的类型转换有 显式转型 和 隐式转型 两种方式. 显式转型:有可能引发异常.精确度丢失及其他问题的转换方式.需要使用手段进行转换操作. 隐式转型:不会改变原有数据精确度.引发异常,不会发生任何问 ...
- JS的类型转换,强制转换和隐式转换
JS的类型转换 1.强制转换 通过String(),Number(),Boolean()函数强制转换 var str=123; var str1='123'; console.log(typeof s ...
- JS高阶函数的理解(函数作为参数传递)
JS高阶函数的理解 高阶函数是指至少满足下列条件之一的函数. · 函数可以作为参数被传递 · 函数可以作为返回值输出 一个例子,我们想在页面中创建100个div节点,这是一种写法.我们发现并不是所有用 ...
随机推荐
- 动态添加Redis密码认证的方法
1.定制jedis 对redis返回的错误的处理,做两处修改: 忽略 (error) ERR Client sent AUTH, but no password is set.使配置了密码的jedis ...
- 密度聚类 - DBSCAN算法
参考资料:python机器学习库sklearn——DBSCAN密度聚类, Python实现DBScan import numpy as np from sklearn.cluster impo ...
- wafer2的几个简单示例
如何快速新建路由 服务端 Demo 采用 Koa.js 框架编写,腾讯云基于 Koa 对上层进行一个简单的封装,方便你快速的添加新建路由 只需要在 controllers 目录下新建一个文件,例如为 ...
- Introduction to Semidefinite Programming (SDP)
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-251j-introduction-to-mathe ...
- 表演的艺术,妖尾回合制战斗系统客户端设计[Unity]
妖尾历经几年开发,终于在今年6月底顺利上线,笔者从2017年初参与开发,主要负责妖尾战斗系统开发.战斗作为游戏的核心玩法系统,涉及很多技术点,希望能借几篇文字,系统性总结MMORPG战斗系统的开发经验 ...
- 物联网架构成长之路(46)-Rancher部署应用入门
0.前言 上一篇已经安装好Rancher了,这一篇主要是简单的操作一下Rancher,了解一些常用功能.1.集群信息 选择对应的集群,查看对应集群信息. 还可以执行kubectl命令,命令可以参考前几 ...
- Unity Shader 屏幕后效果——全局雾
Unity内置的雾效需要在每个shader中分别编写,造成了极大的不便.这里利用屏幕后处理产生可单独控制且自由度更高的雾效. 屏幕后雾效的本质在于,通过深度纹理重构出每个像素在世界空间中的位置,根据得 ...
- PHP 中的关于 trait 的简单
什么是 trait 看看 PHP 官网的介绍. 自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait. Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.T ...
- redis延迟队列
异步消息队列 Redis 的 list(列表) 数据结构常用来作为异步消息队列使用,使用rpush/lpush操作入队列, 使用 lpop 和 rpop 来出队列. > rpush notify ...
- C# 5.0 新特性之异步方法(AM)
Ø 前言 C# Asynchronous Programming(异步编程)有几种实现方式,其中 Asynchronous Method(异步方法)就是其中的一种.异步方法是 C#5.0 才有的新特 ...