【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

相关文章
相关标签/搜索