Function和Object的关系

Function和Object的关系 

 借别人的图,借用里面的例子,声明了一个构造函数Foo,通过构造函数Foo声明了一个f1实例,以下记录自己的分析理解。

 这两条线比较乱,要是绕的脑子乱了跳过就好。

  主线:(从f1实例到null是一条笔直的链条)

    f1继承自构造函数Foo的显式原型Foo.prototype:f1.__proto__ ——> Foo.prototype

    Foo.prototype继承自Foo函数的构造函数Object的原型Object.prototype:Foo.prototype.__proto__  ——> Object.prototype

    Object.prototype继承自null:Object.prototype.__proto__ ——> null

  支线:(Foo和Object指向Function,Function再转回主线)

    Object对象继承自他的构造函数Function

    Foo构造函数继承自他的构造函数Function

    Function函数继承自他自己的原型Function.prototype

    Function.prototype继承自对象的原型Object.prototype

 总结线路内容:(我要自己把自己绕傻了)

  1.  Object对象有Function的原型方法,但是没有Function上的方法

      Object.__proto__ === Function.prototype

  2.  Function构造函数有Object对象的原型方法,但是没有Object对象上的方法

      Function.prototype.__proto__  ||  Function.__proto__.__proto__ === Object.prototype  

  3.  Function构造函数继承自他自己的显式原型(为什么要这样设计?)

      Function.__proto__ === Function.prototype

  4.  我把Function和Object当做同一级的两个内容设定,我的理解是,Function是Object的直接扩展,Object是Function的次要扩展(根据1和2的式子推断)。Object直接继承Function的显式原型,Function间接继承Object显式原型。

  5.  Object和Function互相instanceof 都为 true,也就是说Object和Function互为实例

 真正的总结

  1. 我理解原型链要分为4层:

    • 第一层 实例层 f1
    • 第二层 构造函数层 Foo
    • 第三层 对象和函数层 Object和Function 这两个玩意是所有对象和函数的爸和妈
    • 第四层 null层 以太,一切的起点

  2. 正常情况下,原型链上所有的对象都是继承自他的构造函数的显式原型,也就是说如 f1.__proto__  ——> Foo.prototype

  3. 特例,当某个对象的显式原型的构造函数是他自己时,他的显式原型就去继承Object对象的显式原型,比如说 Foo.prototype.__proto__ ——> Object.prototype。

    而Object的显式原型对象则会继承null。 Object.prototype.__proto__ ——> null

  4. 所有的构造函数方法,都是Function构造函数提供的,也就是说,所有有构造函数的对象都是继承自Function的,Function自己没有构造函数,或者说他是他自己的构造函数(他就是构造函数,构造函数就是他,他是一切构造函数的源头,他是万恶之源,他用自己继承了自己)。

  5. 我不知道我说的对不对,说错了别打我。

图片来源JavaScript中显式原型和隐式原型的联系https://www.cnblogs.com/liubinghaoJavaScript/p/7478432.html

原文地址:https://www.cnblogs.com/DCXavier/p/12431481.html

时间: 2024-07-31 19:25:07

Function和Object的关系的相关文章

JavaScript中Function和Object的关系

今天,QQ技术讨论群里面有一个人在聊天,说今天面试,面试官问他的第一个问题他就懵逼了,说是Function和Object的关系,或者说他们有什么区别.当时我微微一笑,心想这么简单的问题你都解释不清楚,那你竟然还有信心去面试.可是,当我试图组织语言来嘲讽他几句时,发现我也组织不清楚.痛定思痛,一步一步来屡一下他们之间的关系. 首先,Function是一个构造函数,那它一定就有它对应的原型对象Function.prototype,我们使用控制台打印可以得出Function.prototype=fun

一张图看懂Function和Object的关系及简述instanceof运算符

我在写一篇图解prototype和__proto__的区别时,搜资料搜到了一个有意思的现象,下面这两个运算返回的结果是一样的: Function instanceof Object;//true Object instanceof Function;//true 这个是怎么一回事呢?要从运算符instanceof说起. 一.instanceof究竟是运算什么的? 我曾经简单理解instanceof只是检测一个对象是否是另个对象new出来的实例(例如var a = new Object(),a i

JS原型的问题Object和Function到底是什么关系

var F = function(){}; Objcert.prototype.a = function(){}; Function.prototype.b = function(){}; F 既能访问到a,也能访问到(Object 和 Function也同样,但是所有的实例只能访问到a):F是Object 和 Function 两个的实例,那么Object 和 Function 到底是什么关系? 下面是对Object 和 Function 的了解 F instanceof Object tru

Javascript中的函数(Function)与对象(Object)的关系

今天我们来尝试理解Function和Object.因为这个里面有些人前期可能会搞糊涂.他们之间到底是什么关系.当然也不除外当初的我. 注意:官方定义: 在Javascript中,每一个函数实际上都是一个函数对象. 我们先来看最简单的两个代码,也是最容易理解的. function fn(){} var obj = {} console.log(fn instanceof Function)//true console.log(obj instanceof Object)//true console

javascript中的Function和Object

写的很好,理解了很多,特此转发记录 转自:http://blog.csdn.net/tom_221x/archive/2010/02/22/5316675.aspx 在JavaScript中所有的对象都继承自Object原型,而Function又充当了对象的构造器,那么Funtion和Object到底有着什麽样的关系呢 ? 首先,一切都是对象. 1 alert(Object instanceof Object); // true 2 alert(Function instanceof Objec

【JavaScript】JavaScript的Function与Object浅析

前言: JavaScript的面向对象是基于原形的,所有对象都有一条属于自己的原型链.Object与Function可能很多看Object instanceof Function , Function instanceof Object都为true而迷惑,所以首先看下对象的实例. 一.JS中所谓的实例 1. 如var a = new A();这样子通常的认为 “a为A函数的实例对象”. 2. new操作的过程是什么? 1.new创建一个空对象{}称为小C 2.然后将A.prototype放置到小

关于Function和Object之间先后问题的相关研究

文章说明,博主是一个前端小白,本片文章是博主在学习的过程中碰到的疑惑,根据查找的资料,之后得出的个人结论,文中如果出现错误,欢迎指正. -------路漫漫其修远兮吾将上下而求索,与诸君共勉-------- js中Function和Object的问题 ? 首先了解,原型的概念,所谓的原型,其实就是一个对象的本质,既然是对象的本质,那么说明原型的本身就是一个对象, (注:这里是作者本人的个人理解,原型就像是一个模具,通过想象,当一个实例对象被创建的时候,首先是由构造函数产生一个最初的对象模子,然后

javascript中的Function与Object,function与object

function与object是数据类型,Function与Object是两个函数对象的标识符(等价于两个函数对象),Function与Object的数据类型都是function. 首先我们看下面的例子(typeof 表示数据类型,instanceof表示实例类型---用原型链查找): var a = function(){}; var b = {}; var c = 1; var d; var e = null; var f = false; var g = ""; console.

javascript中Function与Object

1. 先来一段代码: console.log(Function); // function Function() { [native code] } console.log(Object); // function Object() { [native code] } console.log(Function.prototype); // function () {} console.log(Object.prototype); // Object {} console.log(Function