什么是原型
原型指的是显式原型prototype
和隐式原型__proto__
prototype
:所有的函数都有prototype
属性,prototype
属性的值是原型对象
- 原型对象上默认有两个属性,
constructor
和__proto__
constructor
:指向函数本身,因此foo().prototype.constructor === foo();
__proto__
:指向Object.prototype
- 而
Object.prototype
也有__proto__
属性,函数->构造函数->Function.prototype->Object.prototype->null,形成原型链
__proto__
:所有的对象都有__proto__
属性
- 实例的
__proto__
指向构造函数的原型对象 - 实例化对象三种方式:
var obj1 = {}; //字面量
var obj2 = Object.create({}); //构造函数方法
var obj3 = new Object(); //构造函数