一. 构造函数
- 用于创建对象的函数,一般首字母大写区别与一般函数。
- 构造函数自带prototype属性,函数的prototype属性是个指针,该指针指向原型对象。
二. 原型对象
- 有constructor属性,这个指针指向相关联的构造函数
三. 实例对象
- 调用构造函数new出来的对象,每个对象都有_proto_属性
- 该属性指向构造函数的原型对象。
我们看一个程序,理解一下。
<script>
function Person(name,age){
this.name = name;
this.age = age;
}
var obj1 = new Person("张三",18);
var obj2 = new Person("王五",20);
console.log(obj1);
console.log(obj2);
Person.prototype.area = "北京";
console.log(Person.prototype);
</script>
其中Person( ) 这个函数为构造函数。而通过new Peron( )之后的obj1和obj2则为实例对象。构造函数的prototype指向原型对象。原型对象有个constructor属性指向构造函数。而实例对象中有个_proto_的属性指向原型对象。
总结:
- 每个构造函数都有一个指向原型对象的指针 prototype
- 原型对象上有指向构造函数的指针 constructor
- 实例对象包含着指向原型对象的内部指针_proto_