JS高级——Function原型链
基本概念
1、函数可以通过Function new出来,那么Function可以被称作构造函数,被new出来的函数可以被称为一个对象
2、Function既然是构造函数,那么肯定也有原型,它的原型是一个空的函数
3、Function的原型对象的原型对象最终指向的是object.prototype
原型链图
由上面基本概念衍生出的原型链图
1、Person构造函数,它既然是函数,那么肯定可以通过Function创建出来,那么就可以被当作对象
2、P对象还是函数对象,最后指向的都是object.prototype

Object与Function的关系
两者关系其实是比较复杂的,可以通过instanceof关键字来检测
1、Object构造函数是通过Function构造函数实例化出来的(object构造函数肯定也是函数,既然是函数就是对象,就可以通过Function创建出来)
2、Function本身是构造函数,既然是函数也可以被Function构造函数创建出来(这个相当于自己创建自己)
3、下面返回都是true
<script>
// instanceof:判断该构造函数的原型是否存在于该对象的原型链上 // Function-- > Function.prototype---- > Object.prototype---- > null
console.log(Function instanceof Object); //Object.prototype是否在Function的原型链上
console.log(Function instanceof Function);//Function.prototype是否在Function的原型链上 // Object--->Function.prototype---->Object.prototype----->null
console.log(Object instanceof Function);//Function.prototype是否在Object的原型链上
console.log(Object instanceof Object);//Object.prototype是否在Object的原型链上
</script>
由上面关系绘制的原型链图

JS高级——Function原型链的更多相关文章
- js继承之原型链继承
面向对象编程都会涉及到继承这个概念,JS中实现继承的方式主要是通过原型链的方法. 一.构造函数.原型与实例之间的关系 每创建一个函数,该函数就会自动带有一个 prototype 属性.该属性是个指针, ...
- JS中注意原型链的“指向”
昨天压缩Js文件时发现了项目中的一个prototype的问题代码如下所示: 1. <script> var XXX = function(){ }; var x1 = new XXX(); ...
- JS 一条原型链扯到底
在正文之前,首先要知道两点, 1.__proto__是每个js 对象的内置属性,而prototype 是函数的内置属性,也是一个对象. 2.所谓原型,指的就是每个函数对象的prototype属性. f ...
- JS对象、原型链
忘记在哪里看到过,有人说鉴别一个人是否 js 入门的标准就是看他有没有理解 js 原型,所以第一篇总结就从这里出发. 对象 JavaScript 是一种基于对象的编程语言,但它与一般面向对象的编程语言 ...
- JS面向对象之原型链
对象的原型链 只要是对象就有原型 原型也是对象 只要是对象就有原型, 并且原型也是对象, 因此只要定义了一个对象, 那么就可以找到他的原型, 如此反复, 就可以构成一个对象的序列, 这个结构就被成 ...
- 深入理解JS对象和原型链
函数在整个js中是最复杂也是最重要的知识 一个函数中存在多面性: 1.它本身就是一个普通的函数,执行的时候形成的私有作用域(闭包),形参赋值,预解释,代码执行,执行完 成后栈内存销毁/不销毁. 2.& ...
- js中原型和原型链
1.原型: 在JavaScript 中,对象被表现为prototype . 原型其实一直存在于我们接触过的任何一个对象. 2. Tip:在函数对象中也存在__proto__属性,但是查看函数对象的原型 ...
- JS中的原型链和原型的认识
这篇文章主要是学习一下JavaScript中的难点------原型和原型链 自定义一个对象 我们学习一门编程语言,必然要使用它完成一些特定的功能,而面向对象的语言因为符合人类的认知规律,在这方面做得很 ...
- JS类型判断&原型链
JS类型检测主要有四种 1.typeof Obj 2.L instanceof R 3.Object.prototype.toString.call/apply(); 4.Obj.constructo ...
随机推荐
- Uva12657 Boxes in a Line
题目链接:传送门 分析:每次操作都会花费大量时间,显然我们只需要关注每个元素的左边是啥,右边是啥就够了,那么用双向链表,l[i]表示i左边的数,r[i]表示i右边的数,每次操作模拟一下数组的变化就好了 ...
- Ubuntu 16.04开机进入命令行(tty1)+分辨率调节+字体颜色设置+中文乱码解决(解决虚拟终端Ctrl+Alt+F1分辨率太大)
一.开机进入命令行模式(tty1) sudo vim /etc/default/grub 把GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”改成GRUB_CMDLIN ...
- 演练:使用VS2010 C# 创作简单的多线程组件
BackgroundWorker 组件取代了 System.Threading 命名空间并添加了功能:但是,可以选择保留 System.Threading 命名空间以实现向后兼容并供将来使用.有关更多 ...
- BP神经网络及其在教学质量评价中 的应用
本文学习笔记是自己的理解,如有错误的地方,请大家指正批评.共同进步.谢谢! 之前的教学质量评价,仅仅是通过对教学指标的简单处理.如求平均值或人为的给出各指标的权值来加权求和,其评价结果带有非常大主观性 ...
- 大话USB驱动之总线驱动程序
转载注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/25040009 总线驱动是不用改的.内核都帮我们做好了.为了了解整个USB驱动的体 ...
- VFL演示样例
上篇文章向大家介绍了VFL的基本的语法点,假设对下面演示样例不熟的童鞋,能够前去參考.废话不多说.我们直接来看演示样例. 演示样例一 将五个大小同样.颜色不同的view排成一行,view间的间隔为15 ...
- [LeetCode][Java] N-Queens II
题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ...
- dbms_metadata.get_ddl的用法
--GET_DDL: Return the metadata for a single object as DDL. -- This interface is meant for casual bro ...
- Xamarin nuget package update 错误
update xamarin.Forms包时出现错误: 'The specified path, file name, or both are too long. The fully qualifie ...
- react State改变,页面却没有改变
react 小白编程 做项目时遇到了个问题,无论我怎么查看我的action.reducer 还是 dispatch 函数,都没有发现有什么毛病.但是 debugger 的时候,state 改变了,页面 ...