前言:

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放置到小C的原型链顶端。即小C.__proto__指向 A.prototype

3.执行A函数,将A中this指向小C,执行结束,如果没有return那么默认返回this引用。

那么new的其中一个的作用便是把A.prototype添加到了a的原型链中。

3. instanceof为js中判断实例的方法,判断的根据就是(例 a instanceof A) 判断a的原型链中是否含有A.prototype。

4. 综上包括常规认识new出来的实例。  所谓o 为fn的实例对象,实际就是指o原型链中含有fn.prototype

二、Object与Function的模糊图解(自己画的很搓)

解释: 所有函数的prototype属性均有constructor指向该函数。

所有对象均有原型链(Object.prototype的原型链为null)。

__proto__(chrome, ff中)代表[[proto]]内置属性。

看过这个图之后应该就明白为什么instanceof是那个的结果了。

三、对象与Object的关系,原型链终结于Object.prototype

Object.prototype的原型链为空(即没有一个原型对象)。因此Object.prototype instanceof Object 为false。

判断类型用typeof , typeof(Object.prototype) === ‘object’.所以不是所有的对象均为Object对象实例。应该是除了Object.prototype除外的所有对象均为Object对象的实例。

本人是初学者 欢迎提看的人各种建议,说不对的地方更是感谢...

转载请注明出处:http://blog.csdn.net/SyKent

http://blog.csdn.net/sykent/article/details/8003343

【JavaScript】JavaScript的Function与Object浅析的更多相关文章

  1. javascript中的Function和Object

    写的很好,理解了很多,特此转发记录 转自:http://blog.csdn.net/tom_221x/archive/2010/02/22/5316675.aspx 在JavaScript中所有的对象 ...

  2. JavaScript之Function 和 Object 的区别和联系

    1.先看一个控制台的输出: instanceof 运算符字面意思是 左边是右边的一个实例吗? 但是这两条输出让人很困惑.Function 是 Object 的实例.Object 也是 Function ...

  3. Javascript自执行匿名函数(function() { })()的原理浅析

    匿名函数就是没有函数名的函数.这篇文章主要介绍了Javascript自执行匿名函数(function() { })()的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一 ...

  4. JavaScript中你所不知道的Object(二)--Function篇

    上一篇(JavaScript中你所不知道的Object(一))说到,Object对象有大量的内部属性,而其中多数和外部属性的操作有关.最后留了个悬念,就是Boolean.Date.Number.Str ...

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

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. javascript中Function与Object

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

  7. JavaScript中的Function(函数)对象详解

    JavaScript中的Function对象是函数,函数的用途分为3类: 作为普通逻辑代码容器: 作为对象方法: 作为构造函数. 1.作为普通逻辑代码容器 function multiply(x, y ...

  8. javascript中的function对象

    function对象都是Function的实例: > Object.getOwnPropertyNames(Function) [ 'length', 'name', 'arguments', ...

  9. 深入理解javascript中的Function.prototye.bind

    函数绑定(Function binding)很有可能是你在开始使用JavaScript时最少关注的一点,但是当你意识到你需要一个解决方案来解决如何在另一个函数中保持this上下文的时候,你真正需要的其 ...

随机推荐

  1. C++标准转换运算符 --四种

    具体归纳如下: reinterpret_cast 函数将一个类型的指针转换为另一个类型的指针. 这种转换不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可做到.rein ...

  2. BITED-Windows8应用开发学习札记之三:如何在Win8应用中实现数据绑定

    在微软官方提供的资源中,我们可以看到SampleDataSource.cs已经拥有了定义好了相应的数据结构以及实现类: 建立本地数据 由于我们已经有数据以及相应的数据类,我们需要做的仅仅是将数据放进数 ...

  3. Embedded之memory test

    1 main.c #include "led.h" #define BASE_ADDRESS (volatile datum *) 0x10000000 #define NUM_B ...

  4. 【boost】BOOST_LOCAL_FUNCTION体验

    c++11里支持使用lambda在函数内定义本地嵌套函数,将一些算法的判断式定义为本地函数可以使代码更加清晰,同时声明和调用靠近也使得更容易维护.遗憾的是公司开发平台任然停留在vs2008,使用boo ...

  5. Container View Controller

    有时候,我们的Controler中包含有另一个controler view的view时,可以使用这种方式. https://developer.apple.com/library/ios/featur ...

  6. OpenCV实现的高斯滤波探究_1(《学习OpenCV》练习题第五章第三题ab部分)

    首先看下OpenCV 官方文档对于cvSmooth各个参数的解释: Smooths the image in one of several ways. C: void cvSmooth(const C ...

  7. 【OpenOffice+swftools】在线预览环境的搭建和xpdf中文包的配置

    [环境参数] Host:Win7 64bit VMware:VMware Workstation11.1.0 Client OS:CentOS release 6.5 (Final) 2.6.32-4 ...

  8. 【转】eclipse.ini内存设置

    -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题:1. 各个参数的含义什么?2. 为什么有的机器我将-Xm ...

  9. (翻译)异步编程之Promise(1):初见魅力

    原文:https://www.promisejs.org/ by Forbes Lindesay 异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2) ...

  10. C++11多元组类别

    [C++11多元组类别] 多元组可被视为是 struct 其数据成员的一般化.底下是一个多元组类别的定义和使用情况: 我们可以定义一个多元组类别对象 proof 而不指定其内容,前提是 proof 里 ...