JS是一个基于对象的脚本语言,和java等面向对象语言最大不一样是:
JS中没有类的概念(PS:ES6的类只是一种语法糖)java
原型就比如面向对象中的 类(模具),没有类,就没有对象数组
面向对象语言中,要先定义类才能建立对象
JS中,无须定义原型就能够直接建立对象例子:
对象原型 -- Object.prototype
数组原型 -- Array.prototype
方法原型 -- Function.prototype函数
原型链就是原型与原型之间的关联spa
做用:用于实现继承,原型之间的继承,对象之间的继承
注意:JS内部继承的实现就是靠原型链,没有原型链就没有继承
一、每一个对象都有__proto__属性(指向构造函数的原型),每一个函数都有__proto__属性和prototype属性
二、数组的原型(Array.prototype)是一个数组
三、方法的原型(Function.prototype)是一个方法,但这个方法很特别,它没有prototype属性
四、Object.prototype是全部对象的基类,Object.prototype.__proto__为nullprototype