在了解prototype以及proto之前,先来明确明确几个基本概念。
1.构造函数 :即通过new关键字创建的特定类型的对象的函数,例如:
//创建构造函数 通常开头是大写,与普通函数区分
function Person(name,age){
......
}
//使用new,生成实例
//var person1=new Person(){
........
}
2.原型对象:在Js中,Function(方法)也是一个对象,Function.prototype指向一个空object,即原型对象,原型对象在定义函数时同时被创建,作用是任何实例都共享原型对象中声明的属性和方法。
function Person (){
}
//原型对象中声明属性和方法
person.prototype.name="Atu"
person.prototype.showname()=function(){
alert(this.name)
}
//实例共享其属性和方法
var person1=new Person();
person1.showname()// Atu
而原型对象又有一个constructor属性,他的作用是反过来指向函数本身,即:
console.log(Person.prototype.constructor===Person) //true
3.实例:person1是Person对象的实例,而person1这个对象具有属性proto,指向构造函数的原型对象
alert(person1.proto===Person.prototype) //true
总结:
1:在创建构造函数的同时也会产生原型对象,原型对象中声明的属性和方法会被构造函数所创建的实例共享。
2:每个实例对象的proto属性都指向构造函数的原型
`