原型理解

来源:互联网 发布:2017年度网络流行语 编辑:程序博客网 时间:2024/05/20 04:10
function Person(name,age){    this.name=name;    this.age=age;};Person.prototype={    constructor:Person,    sayName:function(){        alert(this.name);    }}var person1 = new Person("zyh",23);

每个函数被创建后,都会根据一些规则,生成一个prototype属性,这个属性是一个指针,指向的这个函数的原型对象.在例子里面就是函数Person()的prototype指向的是Person.prototype;

原型对象有一个constructor属性指向的是prototype属性所在的函数,例子中就是指向了Person()函数;

调用构造函数创建实例后,实例都会有一个[[prototype]]属性(chrome,firefox,Safari中通过proto可以检测),这个属性指向的是原型对象

所以整个流程就是实例(person1)指向原型对象(Person.prototype),原型对象指向构造函数(Person).

使用proto检测

alert(person1._proto_===Person.prototype)//true

使用isPrototypeOf检测

alert(Person.prototype.isPrototypeOf(person1))//true