js & object & prototype & proto & prototype chain

constructor prototype === instance proto

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype


let log = console.log; function Foo() {
name: "Foo";
} // var foo = new Foo();
let foo = new Foo(); log(Foo.name);
log(foo.name); log(`Foo.prototype =`, Foo.prototype);
log(`foo.prototype =`, foo.prototype); log(`Foo.__proto__ =`, Foo.__proto__);
log(`foo.__proto__ =`, foo.__proto__); log(`Foo.prototype === foo.__proto__`, Foo.prototype === foo.__proto__);

"use strict";

/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2019-08-16
*
* @description prototype-chain (prototype & __proto__ )
* @augments
* @example
* @link https://hackernoon.com/understand-nodejs-javascript-object-inheritance-proto-prototype-class-9bd951700b29
*
*/ let log = console.log; function Foo() {
name: "Foo";
} // var foo = new Foo();
let foo = new Foo(); log(Foo.name);
// Foo log(foo.name);
// undefined log(`Foo.prototype =`, Foo.prototype);
// {constructor: ƒ}
// constructor: ƒ Foo()
// __proto__: Object
log(`foo.prototype =`, foo.prototype);
// undefined log(`Foo.__proto__ =`, Foo.__proto__);
// ƒ () { [native code] }
log(`foo.__proto__ =`, foo.__proto__);
// {constructor: ƒ}
// constructor: ƒ Foo()
// __proto__: Object log(`Foo.prototype === foo.__proto__`, Foo.prototype === foo.__proto__);
// true

https://hackernoon.com/understand-nodejs-javascript-object-inheritance-proto-prototype-class-9bd951700b29

https://stackoverflow.com/questions/9959727/proto-vs-prototype-in-javascript

https://www.freecodecamp.org/news/prototype-in-js-busted-5547ec68872/


( new Foo ).__proto__ === Foo.prototype;
( new Foo ).prototype === undefined;

function Point(x, y) {
this.x = x;
this.y = y;
} var myPoint = new Point(); // the following are all true
myPoint.__proto__ == Point.prototype
myPoint.__proto__.__proto__ == Object.prototype
myPoint instanceof Point;
myPoint instanceof Object;











xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!



js & object & prototype & __proto__ & prototype chain的更多相关文章

  1. Object.prototype.__proto__, [[prototype]] 和 prototype

    Object.prototype.__proto__ , [[prototype]] 和 prototype Object.prototype.__proto__ 是什么? __proto__ 是一个 ...

  2. constructor __proto__ prototype

    js里面constructor __proto__  prototype这三个属性比较难理解,在重点研究这三个属性后,在这里做一个笔记, constructor:构造器,每个对象都有这个属性,他指向构 ...

  3. 再次理解JS的prototype,__proto__和constructor

    个人总结: 下面这篇文章很好的讲解了js原型,原型链,个人的总结是要记住这三个属性 prototype.__proto__和constructor 首先明确,js中一切都是对象object(A). ( ...

  4. Object & prototype & __proto__ All In One

    Object & prototype & proto All In One js 原型,原型链,原型对象 const obj ={}; // {} const obj = new Ob ...

  5. prototype chain & prototype & __proto__

    prototype chain & prototype & proto prototype chain MDN https://developer.mozilla.org/en-US/ ...

  6. JavaScript:Function/Object/prototype/__proto__

    console.log(Object.__proto__===Function.prototype); //true console.log(Object.prototype.__proto__); ...

  7. 彻底搞懂js __proto__ prototype constructor

    在开始之前,必须要知道的是:对象具有__proto__.constructor(函数也是对象固也具有以上)属性,而函数独有prototype 在博客园看到一张图分析到位很彻底,这里共享: 刚开始看这图 ...

  8. js 如何打印出 prototype 的查找路径

    js 如何打印出 prototype 的查找路径 Function function func (name) { this.name = name || `default name`; } f = n ...

  9. javascript prototype __proto__区别

    An Object's __proto__ property references the same object as its internal [[Prototype]] (often refer ...

随机推荐

  1. 目前 c++ primer学习总结笔记

    C++的开始 1 main的返回值:0为成功状态,非0为系统定义的错误类型 2 输入输出:计算结果为左侧运算对象,IO操作读写缓冲与程序中的动作无关 3 输入流istream对象:cin(标准输入): ...

  2. 在Ubuntu安装kubernetes

    一.安装Docker 1. 配置Docker docker安装完成后需要配置cgroup驱动为systemd来增强稳定性 sudo vim /etc/docker/daemon.json { &quo ...

  3. 通过Knockd隐藏SSH,让黑客看不见你的服务器

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) 0X01设备信息   Ubuntu14.04:192.168.61.135   Kali ...

  4. POSTGIS

    https://blog.csdn.net/qq_35732147/article/details/85256640 官方文档:http://www.postgis.net/docs/ST_Buffe ...

  5. Linux内核poll/select机制简析

    0 I/O多路复用机制 I/O多路复用 (I/O multiplexing),提供了同时监测若干个文件描述符是否可以执行IO操作的能力. select/poll/epoll 函数都提供了这样的机制,能 ...

  6. 如何手动封装Promise函数

    第一步:Promise构造函数接受一个函数作为参数,该函数的两个参数分别是:resolve和reject; function Promise(task) { // 缓存this let that = ...

  7. Linux-处理用户输入

    Linux-处理用户输入 1.命令行参数 1.2读取参数 1.3 读取脚本名 1.4测试参数 2.特殊参数变量 2.1 参数统计 2.2抓取所有的数据 3.移动变量 4.处理选项 5.选项标准化 6. ...

  8. C++泛型基础学习

    转载http://blog.csdn.net/xinzheng_wang/article/details/6674847 泛型的基本思想:泛型编程(Generic Programming)是一种语言机 ...

  9. JavaScript解构赋值

    JavaScript解构赋值 JavaScript解构赋值为我们提供了很多方便,但是用法比较多,本文就来梳理一下.总体来说,主要就两种地方使用解构赋值,一种是数组的解构赋值,另一种是对象的解构赋值.以 ...

  10. Python单元测试框架pytest常用测试报告类型

    先前博客有介绍pytest测试框架的安装及使用,现在来聊聊pytest可以生成哪些测试报告 1.allure测试报告 关于allure报告参见先前的一篇博文:https://www.cnblogs.c ...