首先来看下prototype这个对象存在的位置:
js的所有function类型的的对象都有一个prototype属性,这个prototype属性本身又是一个object类型的对象。
事实上构造函数的prototype上定义的所有属性和方法,都是可以通过其构造的对象直接访问调用的。也可以这么说,prototype提供了一群同类对象共享属性和方法的机制 。
function Person(name){ //基类构造函数 this.name=name; }; Person.prototype.sayHello=function (){ alert('hello,i am '+this.name); }; function Employee(name,salary){ //子类构造函数 Person.call(this,name);//调用基类构造函数 this.salary=salary; } Employee.prototype=new Person();//建一个基类的实例对象作为子类原型的原型(原型继承) Employee.prototype.getSalary=function (){ alert('I am '+this.name+' and my salary is '+this.salary); }; var boss=new Person('总裁'); var coder=new Employee('程序员','3000'); boss.sayHello(); coder.sayHello(); coder.getSalary();
关于原型链: