纯属个人理解,有错误的地方希望大牛指出,以免误人子弟

1、构造函数:
构造函数的作用 : 初始化由new创建出来的对象    
new 的作用: 创建对象(空对象)

new 后面跟的是函数调用,使用new来调用函数,跟普通的直接调用函数主要的不同: 就是 this 的指向不同了 , 再就是 会自动的返回新创建的对象

什么是原型?       

原型的作用:就是为了实现继承! 

一个对象的原型就是它的构造函数的prototype属性的值。

在讨论原型的时候,是指的 对象和原型对关系

prototype是哪来的? 

所有的函数都有一个prototype属性, 当函数被创建的时候,prototype属性会自动创建和初始化 (JS的引擎帮我们创建好的),

构造函数的prototype属性的默认值是一个对象,这个对象 只带有一个属性,constructor。 // // Person.prototype.constructor === Person // 结果为:true

 对象在被创建的时候,原型就定下来了, 那么其原型链也就确定下来了

// function Person() {}

//    var p = new Person();

  p是构造函数Person创建的对象,其对象的原型链是

// p -> Person.prototype -> Object.prototype -> null

// Person.prototype = {};      

虽然,修改了Person.prototype的值,但是不能影响到已经创建好的对象的原型链 

 原型链就是对象有原型对象,原型对象也是对象,所以原型对象也有原型对象,这样一环扣一环,就形成了一条链式结构叫做:原型链,也叫对象链 

JavaScript继承就是 拿来主义:自己没有,别人有,拿过来让其成为自己的或者能被自己使用。

一些结论:

1 只有 函数 才有 prototype 属性(★★★★★)

2 只要是 对象 就有 __proto__ 属性(★★★★)

3 构造函数的 prototype 的类型是:"object"(大部分情况下)

javascript中的构造函数和原型及原型链的更多相关文章

  1. JavaScript中的构造函数和原型!

    JavaScript中的原型! 原型的内容是涉及到JavaScript中的构造函数的 每一个构造函数都有一个原型对象!prototype 他的作用是 共享方法!还可以扩展内置对象[对原来的内置对象进行 ...

  2. 深入理解JavaScript中创建对象模式的演变(原型)

    深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Objec ...

  3. JavaScript中的构造函数和工厂函数说明

    在cnblog上看到一篇文章,讲解JS中的构造函数和工厂函数,觉得讲的真好 JavaScript中的工厂函数和构造函数都能用来创建一个对象,我们可以来看看下面的例子 构造函数 function cre ...

  4. javascript中的this与prototype,原型理解

    JavaScript 函数调用 JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. this 关键字 一般而言,在Javascript中,this指向函数执行 ...

  5. Javascript中的函数、this以及原型

    关于函数 在Javascript中函数实际上就是一个对象,具有引用类型的特征,所以你可以将函数直接传递给变量,这个变量将表示指向函数“对象"的指针,例如: function test(mes ...

  6. JavaScript中的构造函数

    目录: constructor & prototype 为构造函数添加属性和方法的多种不同方法 组合使用this和prototype关键字创建构造函数(常用方法) 用对象直接量作为构造函数的参 ...

  7. JavaScript 中的构造函数

    典型的面向对象编程语言(比如C++和Java),存在“类”(class)这个概念.所谓“类”就是对象的模板,对象就是“类”的实例.但是,在JavaScript语言的对象体系,不是基于“类”的,而是基于 ...

  8. javascript中的构造函数和继承

    1.第一节 使用工厂模式创建一个构造函数CreatePerson function CreatePerson(name,sex){//构造函数:用于构造对象 可以说在js里类就是构造函数 //1.原料 ...

  9. JavaScript中以构造函数的方式调用函数

    转自:http://www.cnblogs.com/Saints/p/6012188.html 构造器函数(Constructor functions)的定义和任何其它函数一样,我们可以使用函数声明. ...

随机推荐

  1. springMvc学习地址新

    http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar ...

  2. Linux删除重复内容命令uniq笔记

    针对文本文件,有时候我们需要删除其中重复的行.或者统计重复行的总次数,这时候可以采用Linux系统下的uniq命令实现相应的功能. 语法格式:uniq [-ic] 常用参数说明: -i 忽略大小写 - ...

  3. luogu P4719 【模板】动态 DP 矩阵乘法 + LCT

    方法二:LCT+矩阵乘法 上文中,我们用线段树来维护重链上的各种矩阵转移. 第二种方法是将树链剖分替换为动态树. 我们知道,矩阵乘法 $\begin{bmatrix} F_{u,0} & F_ ...

  4. 15.5.5 【Task实现细节】围绕 await 表达式的控制

    任何 await 表达式均表示执行路径的一个分支.首先,被等待的异步操作得到一个awaiter,然后检查其 IsCompleted 属性.若返回 true ,即可立即获得结果并继续.否则,需进行以下处 ...

  5. HTTP 下载文件中文文件名在 Firefox 下乱码问题

    转自:http://www.imhdr.com/991/ HTTP 下载文件,中文文件名在 Firefox 下乱码问题 最近帮助一同事解决 HTTP 下载文件时,中文文件名在 Firefox 下乱码的 ...

  6. Java基础学习总结(39)——Log4j 1使用教程

    1. 配置文件 Log4J配置文件的基本格式如下: #配置根Logger log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderN ...

  7. uva 交叉染色法10004

    鉴于网上讲交叉染色的资料比较少,于是我把我自己的心得与方法贴出来,方便与大家共同进步. 二分图: 百度百科传送门 wiki百科传送门 判断一个图是否为二分图可以用交叉染色的方法来判断,可以用BFS,也 ...

  8. 【ACM】hdu_zs3_1003_绝对值排序_201308100742

    绝对值排序 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)Total Submissi ...

  9. Spring Boot错误:Unable to start embedded container...的问题解决

    解决方法: 1.用错了注解,改用以下注解: @SpringBootApplication 相当于:@Configuration.@ServletComponentScan.@EnableAutoCon ...

  10. Java 代理学习笔记

    http://blog.csdn.net/mr_seaturtle_/article/details/52686516