【Javascript】- Prototype 原型

本文深入探讨了JavaScript中prototype的概念,解释了如何利用原型来创建对象,并实现了对象的继承。通过具体的代码示例,展示了对象的创建、方法的定义及调用,以及如何通过原型链实现方法和属性的继承。

JS Prototype 原型

prototype:原型:如果对象B是建立在对象A的基础上,那么A为B的原型,类似Java里面的父类和子类的关系,B不仅可以使用A定义的属性和方法,还可以进行额外的功能扩展,经常应用在js框架里面。

定义基础对象:

 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属性。

测试代码

<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>

分析

baseClass类为extendClass类的原型,extendClass可以使用所有的原型的方法,实现功能和属性扩展(类似java里面的继承)如果方法名一致,js引擎扫描从自身扫描开始,如果扫描到则不进行向下扫描(原型链工作原理)

转载于:https://my.oschina.net/yangzhiwei256/blog/3016939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值