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__ 是一个 ...
随机推荐
- Apache2.4.7 + php5 + mysql thinkphp
1. LAMP 的安装sudo apt-get install apache2 2.安装PHP sudo apt-get install libapache2-mod-php5 php5 php5- ...
- man page ,info page 和/usr/share/doc/整理自鸟哥
- 比如查看date指令 - 命令:vbird@www ~]$ man date - 返回示例(部分):DATE(1) User Commands DATE(1) - 部分释义(注释2): ...
- [UE4]使用PlayerController获取鼠标点击时的坐标
1,获取鼠标在当前场景中坐标系统的中的position,加入场景地图的范围是一千平方米,那么这个position的范围也是1000米x1000米. 注册鼠标事件 FInputActionBinding ...
- 自己写的一个jQuery对联广告插件
效果图: 文件的位置摆放: 插件的代码: ;(function($){ $.extend({ dLAdv:function(options){ var defaults={ leftType:0,// ...
- Web 过滤器参数设置问题
问题描述: 在代码定义了3个过滤器,分别为filter1,filter2,filter3,过滤的Servlet范围分别是"/*","/Servlet1",&qu ...
- C++并发编成 03 线程同步
这一节主要讲讲线程同步的方式,C++ 11中提供了丰富的线程同步元语,如condition_variable,futrue,std::packaged_task<>,std::promis ...
- dbms_xplan之display_cursor函数的使用
DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行计划,在大多数情况下,显示真实的执行计划有助于更好的分析SQ ...
- storm项目优化
实现监控脚本监控topology运行状态
- 显示锁(一)Lock显示锁的优点
转载自 Java 并发:Lock 框架详解 摘要: 我们已经知道,synchronized 是java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchroni ...
- 2.纯 CSS 创作一个矩形旋转 loader 特效
原文地址:2.纯 CSS 创作一个矩形旋转 loader 特效 扩展后地址:https://scrimba.com/c/cNJVWUR 扩展地址:https://codepen.io/pen/ HT ...