【Javascript】- Prototype 原型

JS Prototype 原型

prototype:原型:若是對象B是創建在對象A的基礎上,那麼A爲B的原型,相似Java裏面的父類和子類的關係,B不只能夠使用A定義的屬性和方法,還能夠進行額外的功能擴展,常常應用在js框架裏面。java

定義基礎對象:框架

function People(name){
         //對象屬性
         this.name=name; 
	
        //對象方法:相似java中的public方法(只能由對象實例調用)
	    this.show=function(){  
		console.log(name+"is a common person......");  
	  };
  }

  //對象方法:相似java中的靜態方法,只能由類自己調用
  People.run = function(){  
	  console.log("People can run.................");
  }

 //定義對象的原型方法,相似非靜態方法
 People.prototype.showSelf = function(){ //原型方法
  	console.log("I am a optimistic people.......");
  }
  
  //對象實例化測試
  var people=new People("Squirrel");
  People.run();  //調用類方法
  people.show();
  people.showSelf();

效果:測試


JS 實現對象繼承

實現:繼承的原理經過原型實現,每一個Javascript對象都具有prototype屬性。ui

測試代碼this

<script>
	var baseClass = function(){ //父類
		  this.name="baseClass:name--->baseClass";
		  this.showMsg = function(){
		     console.log("baseClass::showMsg");   
		  }
		}
    
	var extendClass = function(){ //子類
		this.age = "extendClass:age--->20";
		this.showMsg = function(){
			 console.log("extendClass::showMsg");   
		};
	}
         
	extendClass.prototype = new baseClass();

	var instance = new extendClass();
	instance.showMsg(); //相似方法被重寫
	console.log(instance.name)
	console.log(instance.age)
</script>

分析prototype

baseClass類爲extendClass類的原型,extendClass能夠使用全部的原型的方法,實現功能和屬性擴展(相似java裏面的繼承)若是方法名一致,js引擎掃描從自身掃描開始,若是掃描到則不進行向下掃描(原型鏈工做原理)3d

相關文章
相關標籤/搜索