通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性列表。只有构造器(Object,Function,Array,Date,String)才具有且会有一个prototype属性。原型链继承就是创建一个新的指针,指向构造器的prototype属性。
prototype属性列表会默认有一个constructor(构造函数)属性,这个属性是一个指向prototype属性所在指针,也就是当前对象自己。
1 function baseClass() 2 { 3 this.showMsg = function() 4 { 5 alert("baseClass::showMsg"); 6 } 7 8 this.baseShowMsg = function() 9 { 10 alert("baseClass::baseShowMsg"); 11 } 12 } 13 baseClass.showMsg = function() 14 { 15 alert("baseClass::showMsg static"); 16 } 17 18 function extendClass() 19 { 20 this.showMsg =function () 21 { 22 alert("extendClass::showMsg"); 23 } 24 } 25 extendClass.showMsg = function() 26 { 27 alert("extendClass::showMsg static") 28 } 29 30 extendClass.prototype = new baseClass(); 31 var instance = new extendClass(); 32 33 instance.showMsg(); //显示extendClass::showMsg 34 instance.baseShowMsg(); //显示baseClass::baseShowMsg 35 instance.showMsg(); //显示extendClass::showMsg 36 37 baseClass.showMsg.call(instance);//显示baseClass::showMsg static 38 39 var baseinstance = new baseClass(); 40 baseinstance.showMsg.call(instance);//显示baseClass::showMsg