prototype & __proto__
【普通对象 vs 函数对象】
js中对象分为两类,普通对象、函数对象。当在终端打印时,普通对象与函数对象有极其明显的差异。
一个不含杂七杂八的函数对象如下,这是第一种表现形式。:
若往里面塞东西,则会显示成下面这样。这是第二种表现形式,特点是【】别扭地紧跟在{右侧。:
一个普通对象有如下两种形式:
普通对象无法通过()来调用,函数对象可以通过()来调用,这是重大区别。
【内置数据剖析】
js引擎内部有一个函数对象,这里称为BaseFunction,以及一个空对象,这里称为Root。
BaseFunction的prototype为undefined,__proto__为Root。
Root的prototype为undefined,__proto__为null。
prototype在js的语义为本函数对象所创建类型的基类,__proto__的语义为本对象所属的类对象。
BaseFunction、Root 是javascript一切内容的基石。
js内建类型中,Number、Array、Object、Function均由BaseFunction创建而得。
其中Function函数对象的prototype、__proto__均指向BaseFunction。
Object的prototype为Root,__proto__为Function,意为Object是一个Function,Root为所有普通对象的基类对象。
【prototype & __proto__】
这是两个完全不想着的变量。prototype指类型原型,__proto__是继承链。
A method called at the moment an object is instantiated. It usually has the same name as the class containing it.
1)Function.prototype是一个函数对象,这里称为F1对象。此对象只能通过Function.prototype来引用。
2)Function是一个函数对象,这里称为F2对象。其prototype、__proto__都指向F1对象。
当使用Function来创建新函数时,如 function SayHello(){},会做以下几件事:
1、创建一个SayHello函数对象,内置逻辑为上述逻辑。
2、创建一个对象,此处称为SayHelloBase,用SayHello初始化。SayHelloBase作为所有SayHello对象的基类。
prototype & __proto__的更多相关文章
- 关于 JavaScript prototype __proto__ 一点总结
http://www.cnblogs.com/wbin91/p/5265163.html 先上代码 function(y) Foo{ this.y = y;} Foo.prototype.x = 10 ...
- javascript prototype __proto__区别
An Object's __proto__ property references the same object as its internal [[Prototype]] (often refer ...
- Javascript Prototype __proto__ constructor 三者的关系
JavaScript三大毒瘤 --- this,原型链,作用域 在我等菜鸟一步一步升级中的过程中,这三个概念总是困扰这我们(可能只有我吧,我比较蠢).这三个东西往往都很绕,今天我就来分享一下我对原型. ...
- 深入理解JavaScript原型:prototype,__proto__和constructor
JavaScript语言的原型是前端开发者必须掌握的要点之一,但在使用原型时往往只关注了语法,其深层的原理并未理解透彻.本文结合笔者开发工作中遇到的问题详细讲解JavaScript原型的几个关键概念, ...
- 基础知识点 关于 prototype __proto__
基础知识点 关于 prototype __proto__ 供js新手参考 JavaScript 的一些基础知识点: 在 JavaScript 中,所有对象 o 都拥有一个隐藏的原型对象(在 Fire ...
- JavaScript:Function/Object/prototype/__proto__
console.log(Object.__proto__===Function.prototype); //true console.log(Object.prototype.__proto__); ...
- 再次理解JS的prototype,__proto__和constructor
个人总结: 下面这篇文章很好的讲解了js原型,原型链,个人的总结是要记住这三个属性 prototype.__proto__和constructor 首先明确,js中一切都是对象object(A). ( ...
- prototype __proto__ Function
我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象.(注意:是函数才有prototype属性) 而__proto__属性每一个对象都有. 在js中如果A对象是由B函数构 ...
- Object.prototype.__proto__, [[prototype]] 和 prototype
Object.prototype.__proto__ , [[prototype]] 和 prototype Object.prototype.__proto__ 是什么? __proto__ 是一个 ...
随机推荐
- phpstorm xdebug
xdebug安装 https://xdebug.org/wizard.php http://blog.csdn.net/zhyh1986/article/details/45172685 http:/ ...
- Redis内存数据库操作命令详解
一.连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 二.对value操作的命令 exists(key):确认一个key是否存在 ...
- 【Hibernate学习笔记-6.1】无连接表的N-1关联(单向)
作者:ssslinppp 1. 摘要 主要讲解N-1关系表的设计,N:从表,1:主表: 从表(N)中使用外键关联到主表(1),单向的: 场景: 许多人(N)可以住在同一个地方(1),知道人 ...
- DDA画线算法
#include<stdio.h> #include"graphics.h" #include<math.h> #include<stdlib.h&g ...
- [转]Java. SqlServer 使用
public void add(Emp emp) throws Exception { String connectionUrl = "jdbc:sqlserver://localhost: ...
- FiddlerCoreAPI 使用简介
原文:https://blog.csdn.net/zhang116868/article/details/49406599 大名鼎鼎的Fiddler大家都知道,或者用过,Fiddler 开放了他的Fi ...
- 学学Gearman
通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的 ...
- 与PHP5.3.5的战斗----记php5.3.5安装过程
与PHP5.3.5的战斗----记php5.3.5安装过程 摘自:http://blog.csdn.net/lgg201/article/details/6125189这篇文章写的很是不错,,,也是我 ...
- SQL Server2016 配置管理器
SQL Server2016 以后版本配置管理器的配置管理器不再同数据库工具集成,是单独的应用. Windows 10: 要打开 SQL Server 配置管理器,请在“起始页”中键入 SQLServ ...
- WebLogic 任意文件上传 远程代码执行漏洞 (CVE-2018-2894)------->>>任意文件上传检测POC
前言: Oracle官方发布了7月份的关键补丁更新CPU(Critical Patch Update),其中针对可造成远程代码执行的高危漏洞 CVE-2018-2894 进行修复: http://ww ...