原型(prototype):在以编程的基础上来说,原型对应着对象,即一个原型就是一个对象。
在Javascript中几乎所有的东西都是对象:
1、对象永远都是对象;
2、函数永远都是对象;
3、数组永远都是对象
4、字符串是对象(在用 new 关键词定义时)
5、数字是对象(如果用 new 关键词定义)
6、布尔是对象(如果用 new 关键词定义)
7、正则表达式永远都是对象
8、算术永远都是对象
9、日期永远都是对象
即在JavaScript中,所有 JavaScript 值,除了原始值,都是对象。
原型链:实例对象和原型对象之间的链接,每一个对象都有原型,原型本身又是对象,原型又有原型,以此类推形成一个链式结构.称为原型链。
每个实例对象都有一个__proto__属性,指向对应的原型对象,同时每个实例对象的构造函数也都有一个prototype属性,和实例对象的__proto__属性指向同一个对象。
当对象在查找属性时,如果这个对象中没有则会__proto__向对象的原型进行查找。
最后,一切皆对象,万物皆空(null)。