JavaScript面向对象教程2-类和对象

这篇教程详细介绍了JavaScript中的面向对象编程,包括对象的概念、类的声明、如何创建类和对象,以及类中添加共有方法的实践。强调了在类中使用this的注意事项,如构造函数、方法中的this指向问题,并提供了实例化的示例。

一.对象

对象:它是一个具体的事物,也是一组无序的相关属性和方法的集合,例如生活中的一本书、一辆车就是对象。

属性:事物的特征,常用名词表示。

方法:事物的行为,常用动词表示。

在这里插入图片描述
如图:汽车的外形很好看,能够在道路上行驶。

汽车是对象,外形是属性,行驶是方法。

二.类

类:它可以使用class关键字声明一个类,之后这个类用来实例化对象。

例子:类就像一张设计汽车的图纸,是抽象的,为了设计出真正的汽车。

在这里插入图片描述
如图:通过抽象的轮胎类、车门类、颜色类等设计,来构造一辆汽车。

三.创建类和对象

创建类的语法:class name{ }

创建实例:var xx=new name();


代码思路:实参传递给形参,形参再赋值给对象里的name,接着,我们就可以通过对象去访问里面的属性了。

<script> 
   // 1.创建类
   class Person{
       constructor(name,age){
           this.name=name;
           this.age=age;
       }
   }
   //2.利用类创建对象
   var person1=new Person("张三",20);
   var person2=new Person("李四",22);
   console.log(person1.name);
   console.log(person2.name);
</script>   

函数传参是方法,名字、年龄是属性。
在这里插入图片描述


总结

①类必须使用new来实例化。

②constructor()方法是类的构造函数,用于传递参数,返回实例对象。

③通过new命令生成对象实例化时,自动调用该方法。如果没有定义,类的内部会自动给我们创建一个constructor()。

④this的作用:用于指向默认的对象。

四.类中添加共有方法

共有方法就是共有的函数。


1.person1与person2对象都用到了共有方法

<script> 
   // 1.创建类
   class Person{
       constructor(name,age){
           this.name=name;
           this.age=age;
       }
       sing(){   //共有方法
           console.log(this.name+"在唱歌");
       }
   }
   //2.利用类创建对象
   var person1=new Person("张三",20);
   var person2=new Person("李四",22);
   person1.sing(); 
   person2.sing(); 
</script>   

在这里插入图片描述

总结:类里面的所有函数是不需要写function的。


2.案例升级:在共有函数中,实现传参

<script> 
   // 1.创建类
   class Person{
       constructor(name,age){
           this.name=name;
           this.age=age;
       }
       sing(song){  //共有函数
           console.log(this.name+"在唱"+song);
       }
   }
   //2.利用类创建对象
   var person1=new Person("张三",20);
   var person2=new Person("李四",22);
   person1.sing("李白"); 
   person2.sing("麻雀"); 
</script>   

在这里插入图片描述

五.使用类的注意事项

es6:ECMAScript的第6版。


①在es6中,类没有变量提升,所以必须先定义类,才能通过类实例化。

②类里面的共有属性和方法一定要加this

<script> 
   class Person{
       constructor(name,age){
           this.name=name;
           this.age=age;
           this.sing();
       }
       sing(){
           console.log(this.name,this.age);
       }
   }
   var person1=new Person("张三",20);
</script>   

在这里插入图片描述

③this的指向问题

从上面的代码可以分析出:

构造函数里面的this指向实例化对象,方法里面的this指向方法的调用者。

篇章

上一篇:JavaScript面向对象教程1-编程中的两种思想

下一篇:JavaScript面向对象教程3-继承

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值