原型链有两个概念一直混肴初学者:prototype和_proto_
prototype可以简单理解成是函数的一个内置属性(每个函数都会有)是一个指针,指向对象;
_proto_是对象的内置属性,js内部可以利用它寻找原型链
例子:
var Person = function(){};
var p = new Person();
new一个对象的时候,会经历一下三个步骤:
- var p = {}; (先生成一个空对象)
- p._proto = Person.prototype; (通过_proto_找到Person对象的原型链)
- Person.call(p); (初始化p,接收Person的方法和属性)
使用:
var Person = function(){};
Person.prototype.sayName = function() {
alert("My Name is Jacky");
};
Person.prototype.age = 27;
var p = new Person();
p.age; //27