类和对象 前言面向对象的思维特点 对象class 类创建类添加属性constructor()方法 类里面添加方法类的继承super()调用普通函数注意规范 super要放在this的前面 使用类的注意点注意点1注意点2注意点3 前言
面向对象 更贴近我们的实际生活 可以使用面向对象来描述现实世界事物 但是事物可以分为具体的事物和抽象的事物 比如说 手机 和 华为 手机就是抽象的 泛指所有手机 华为就是具体的 特指华为品牌的手机
面向对象的思维特点抽取(抽象的)对象共用的属性和行为 封装为一个类(模板) 对类进行实例化 , 获取类的对象
面向对象编程我们考虑的是有哪些对象 按照面向对象的思维特点 不断创建对象 指挥对象做事情
对象这里的对象指的是现实生活中的对象 在现实生活中 所有东西都是对象 对象指的是一个具体的事物 看得见也摸得着的实物 比如说 一本书 一个人等等 一个网页 , 一个数据库 等等也是一个对象
在我们JavaScript中 对象一组无序的相关属性和方法的集合 所有事物都是对象 比如字符串 数组 函数等等 所以我们可以理解为 只要是对象 就是由属性和方法组成的 属性: 事物的特征 方法: 事物的行为
class 类在ES6中新增了类的概念 可以用关键字 class 来声明一个类 之后以这个类来实例化对象 简单的说 类的使用方法和构造函数类似 但相比起来语法更加规范
创建类语法如下
添加属性我们的开发中 不太可能创造空对象 一般对象都有属性 我们es6中用class创建对象 也可以添加属性 利用constructor()方法
constructor()方法constructor写在class里面 语法如下
class Star{ constructor (uname,age){ this.uname = uname; this.age = age; } }我们实例化一个对象并打印出来看看结果如何
类里面添加方法对象里面不只有属性 还有方法 我们也可以类里面添加方法 这里我们要知道几个类的规范 1 类里面的函数不需要加function 2 类里面多个函数和方法之间不需要添加逗号 那我们按照规范来添加方法试试看
类的继承在没有ES6的时代,想要实现继承是一个不小的工作。 一方面我们要创建父类的属性,另一方面我们需要继承父类的方法
但是在类中 我们可以用上extends 语法如下 class 继承属性的类 extends 被继承属性的类{} 因为这里是创造一个函数同时继承被继承函数的属性和方法 所以要记得加上{}
案例如下 发现方法还有属性都可以调用
super()当super 作为函数调用时, 它代表的指向的是父类的构造函数,在子类的构造函数必须执行一次 super 函数 简单的说 就是调用了一次父类的函数 我们看下面的代码
class Father { constructor(x,y){ this.x = x; this.y = y; } sum(){ console.log(this.x+this.y); } } class Son extends Father{ constructor(x,y){ this.x = x; this.y = y; } } let x =new Son(2,4); x.sum();我们让Son继承了Father的属性和方法 并且实例化了一个对象 如何我们试试方法的调用 这里报错是因为this的指向问题 虽然继承了方法 但是在类Father的方法中 this指向的还是类Father 这时候我们就要用上super()函数 这里的x和y代表子类的x和y 调用的时候 把子类的x和y分别传递给父类的x和y
从而达到了我们想要的效果
调用普通函数在我们开发中 不是只有调用构造函数 也要调用普通函数 这时候我们也可以用super()来调用普通函数
语法 super.要调用的函数名()
class Father{ sayhi(){ return '啊 困'; }; } class Son extends Father{ sayhi(){ console.log('睡觉了'); } } let x =new Son(); x.sayhi();这时候我们打印的结果还是子类的sayhi内容
那么我们想要它打印的父类的结果 就使用super来调用普通函数
注意规范 super要放在this的前面在我们实际开发中 子类继承父类 还会额外开辟新的方法
但是如果这时候我们调用了父类函数 就会报错 所以我们要把super写在this前面
使用类的注意点 注意点1在es6中类是没有变量提升的 所以必须先定义类 才能通过类实例化对象 简单的说 就是类必须写在实例化的前面
注意点2我们在普通函数中想要调用构造函数的属性 必须加上this
注意点3当我们在类的构造函数中 添加方法函数的时候 也要添加this
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #JavaScript类和对象 #手机