利用prototype属性自定义对象,实现对象继承等面向对象设计


人的prototype之间的继承实现

<script type="text/javascript">
	function Person(name){
		this.name=name;
		this.setName=function(name){
			this.name=name;
		}
		this.getName=function(){
			return this.name;
		}
	}
	var p=new Person("张三");
	alert(p.getName());

	function Student(){
		
	}
	//var stu=new Student();//注意,实例化对象这句要写在对象指定原型后面,不然找不到,因为此时还没有指定原型
	Student.prototype=p;//给学生的对象指定具体的原型  p
	var stu=new Student();//要写在对象指定原型的下面,这样指定的原型才有效,才能调用
	
	stu.setName("aaaaaaaaaaa");//调用原型中的方法
	alert(stu.getName());//调用原型中的方法
</script>

动物类之间的prototype实现

<script type="text/javascript">
	function Animal(name){
		this.name=name;
	}
	Animal.prototype.setName=function(name){//用匿名函数设置动物的原型中的方法
		this.name=name;
	}
	Animal.prototype.getName=function(){//用匿名函数设置动物的原型中的方法
		return this.name;
	}
	Animal.prototype.eat=function(){
		alert("吃东西");
	}
	var animal=new Animal("动物");//实例化动物函数
	
	function Cat(){}
	
	//Cat.prototype=Animal.prototype;//设定动物的原型与猫的原型相等,这样的继承虽然可以继承,但是关系很乱
	Cat.prototype=animal;//将猫的原型指向动物,这里指向时一定是创建实例化后的对象,不能使Animal类
	
	var c=new Cat();
	c.setName("猫");
	var name=c.getName();
	alert(name);
	//c.eat();//这是直接调用父类中的方法
	
	/*c.eat=function(){//方式一:这里复写父类中的eat方法,但这种方法只能对该对象c有效,对新的Cat对象无效
		alert("吃鱼");
	}
	c.eat();*/
	
	Cat.prototype.eat=function(){//方式二:在猫的原型上复写eat的方法,这样其他的Cat对象也可以调用此复写后的方法,但是像其他的对象,如Dog也会调用此复写后的方法,所以这一点要注意
		alert("吃沙丁鱼");
	}
	c.eat();
	
	
	function Dog(){}
	
	Dog.prototype=animal;
	var d=new Dog();
	d.setName("狗");
	alert(d.getName());
	d.eat();



</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King·Forward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值