首页 > 代码库 > javascript中的构造函数和原型及原型链

javascript中的构造函数和原型及原型链

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

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中的构造函数和原型及原型链