javascript之继承

本文介绍了JavaScript中的四种继承方式,包括直接赋值、使用call或apply方法、以及通过原型链实现继承,并探讨了不同方式的特点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javascript是面向对象的语言,而面向对象的特点是:继承、封装、多态。

而javascript中的继承不是真正意义上的继承,他不想java语言那样有extends关键字表示类的继承。

javascript中的继承方式是把你要继承的对象中的属性和方法拷贝到对象中来。

我所了解和使用过的有以下几种:'

 function Person(){
	   this.name="张三";
	   this.age="男";
	   this.sex=232;
   }
   
   Person.prototype.show=function(){
	   alert(this.name+','+this.age+','+this.sex);
   }

 第一种:

  function  Stu(){
	    this.aa=Person;
	    this.aa();
	    delete this.aa;
   }
  var s=new Stu();
  alert(s.name);//张三
其实就是把Person函数赋给Stu中的一个变量aa,然后在Stu函数中执行aa(Person),这时对象中的this指向就是Stu。最后在删除该变量。


第二种:

 function Stu1(){
   Person.call(this);
   }
  var s=new Stu1();
  alert(s.name);//张三

第三种:

function Stu2(){
  Person.apply(this);
   }
  var s=new Stu2();
  alert(s.name);
第二种方式和第三种方式本质都是差不多的,调用函数传入调用函数中this指向的对象(call和apply的用法已在前面说过,这里就不多说了)。


第四种:

 function Stu3(){
	   
   }
   
   Stu3.prototype=new Person();
   
   var s=new Stu();
   alert(s.show());//张三,232,男

第四种方式和前面几种方式最大的区别就是可以继承对象用prototype定义的属性和方法,而前面三种继承方式都不能继承对象用prototype定义的属性和方法。

但是我们定义对象的时候通常都是将对象的属性定义在类中,方法用prototype定义。

为什么要用prototype定义方法?

如果我们把方法定义在类中,那么我们每当new一个对象时类中定义的方法都会执行一次。如我们用prototype定义方法那么就不管new多少对象都只会执行一次,这样可以提高一点性能。



              个人理解望各位多多指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值