JavaScript中Function和Object的关系

  今天,QQ技术讨论群里面有一个人在聊天,说今天面试,面试官问他的第一个问题他就懵逼了,说是Function和Object的关系,或者说他们有什么区别。当时我微微一笑,心想这么简单的问题你都解释不清楚,那你竟然还有信心去面试。可是,当我试图组织语言来嘲讽他几句时,发现我也组织不清楚。痛定思痛,一步一步来屡一下他们之间的关系。

  首先,Function是一个构造函数,那它一定就有它对应的原型对象Function.prototype,我们使用控制台打印可以得出Function.prototype=function(){}。由于控制台打印不代码很简单,直接Function.prototype一句话,所以就不写代码不截图了,到最后一起截图就行了。

  其次,Function本身也是一个对象,所以它一定有它对应的构造函数Function.constructor,同样使用控制台打印得出Function.constructor 是Function本身。同理,Function也会有对应的原型对象Function.__proto__,通过控制台打印,我们可以得出Function.__proto__=function(){},由于Function.prototype也等于function(){},所以Function.prototype==Function.__proto__。

  由于Function.prototype=function(){},function(){}虽然是一个空函数,但是它也会有与之相对应的构造函数Function.prototype.constructor=Function本身。function(){}也会有原型对象Function.prototype.__proto__ = Object{}。

  接下来我们来看看Object,同理,Object也是构造函数,也有原型对象Object.prototype=Object{}。而Object本身也是对象,所以它也有相应的构造函数Object.constructor,而它的构造函数Object.constructor=Function构造函数。而从上文可知Function.constructor也等于Function构造函数,所以我们可以得到结论Object.constructor==Function.constructor,并且都是Function构造函数。针对这种现象,我们可以理解为Function可以实例化Object对象也可以实例化Function对象。他们之间的关系图,如下图所示:

  

   通过他们上文屡之间错综复杂的关系,还是不能准确的得出他们谁是谁的实例对象,那我通过instancsof关键字可以得到他们是彼此的实例对象。所以总结出Function和Object之间的关系为:1、他们是彼此的实例对象。2、Function可以实例化Object对象也可以实例化Function对象。

  PS:控制台打印结果如图所示:

  

  

  

时间: 2024-11-10 00:20:23

JavaScript中Function和Object的关系的相关文章

javascript中function和object的区别,以及javascript如何实现面向对象的编程思想.

1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 5 <title></title> 6 <script language="

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

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

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

Function和Object的关系

Function和Object的关系 借别人的图,借用里面的例子,声明了一个构造函数Foo,通过构造函数Foo声明了一个f1实例,以下记录自己的分析理解. 这两条线比较乱,要是绕的脑子乱了跳过就好. 主线:(从f1实例到null是一条笔直的链条) f1继承自构造函数Foo的显式原型Foo.prototype:f1.__proto__ ——> Foo.prototype Foo.prototype继承自Foo函数的构造函数Object的原型Object.prototype:Foo.prototyp

JavaScript的数据类型都有什么? JavaScript中 toStirng() 与 Object.prototype.toString().call()

JavaScript的数据类型都有什么? (via  BAT互联网公司2014前端笔试面试题:JavaScript篇  http://www.sxt.cn/u/756/blog/4508) 基本数据类型:String,boolean,Number,Undefined, Null 引用数据类型: Object(Array,Date,RegExp,Function) 疑问:这些基本的数据类型的值都是常量,而常量是没有方法的,为什么能够调用方法呢?答案是这样的,五种基本类型除了null.undefin

javascript中(function($){...})(jQuery)写法是什么意思

在javascript中 (function($){...})(jQuery)的写法是什么意思. ======================================================================   //这是一条分割线. 首先 function(arg){ //.... } 这种形式的在javascript中称之为匿名函数.arg则是匿名函数的参数. 而(function($){ })(jQuery);这种形式则是执行匿名函数并且传递参数jQuery.

Javascript中Function declarations 理解

首先来看一段代码: 1.f = function() {return true;}; 2.g = function() {return false;}; 3.(function() { 4. if (g() && [] == ![]) { 5. f = function f() {return false;}; 6. function g() {return true;} 7. } 8.})(); 9.console.log(f()); 理解上面这段code有几个关键点: 第4行code的

JavaScript中Function函数与Object对象的关系

函数对象和其他内部对象的关系 除了函数对象,还有很多内部对象,比如:Object.Array.Date.RegExp.Math.Error.这些名称实际上表示一个 类型,可以通过new操作符返回一个对象.然而函数对象和其他对象不同,当用typeof得到一个函数对象的类型时,它仍然会返回字符串 "function",而typeof一个数组对象或其他的对象时,它会返回字符串"object".下面的代码示例了typeof不同类型的情况: 以下是引用片段: alert(ty

Javascript中函数调用和this的关系

例子先行: var myObject={ foo:"bar", func:function(){ var self=this; console.log("outerfunc:this.foo="+this.foo); console.log("outerfunc:self.foo="+self.foo); (function(){ console.log("innerfunc:this.foo="+this.foo); con