ES6新特性16-Class

文章目录

  • ES6新特性16-Class
    • 一、Class介绍和初体验
    • 二、class静态成员
    • 三、构造函数继承
    • 四、子类对父类方法的重写
    • 五、get和set

一、Class介绍和初体验

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class关键字,可以定义类。基本上, ES6 的

class可以看作只是一个语法糖,它的绝大部分功能, ES5 都可以做到,新的 class写法只是让对象原型的写法更加清晰、更像面向对象编

程的语法而已。

知识点:

  1. class声明类
  2. constructor定义构造函数初始化
  3. extends继承父类
  4. super调用父级构造方法
  5. static定义静态方法和属性
  6. 父类方法可以重写
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>类声明</title>
</head>
<body><script>//手机function Phone(brand, price){this.brand = brand;this.price = price;}//添加方法Phone.prototype.call = function(){console.log("我可以打电话!!");}//实例化对象let Huawei = new Phone('华为', 5999);Huawei.call();console.log(Huawei);//classclass Shouji{//构造方法 名字不能修改constructor(brand, price){this.brand = brand;this.price = price;}//方法必须使用该语法, 不能使用 ES5 的对象完整形式call(){console.log("我可以打电话!!");}}let onePlus = new Shouji("1+", 1999);console.log(onePlus);</script>
</body>
</html>

二、class静态成员

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>静态成员</title>
</head>
<body><script>//这样的属性是属于函数对象的,而不属于实例对象// function Phone(){// }// Phone.name = '手机';// Phone.change = function(){//     console.log("我可以改变世界");// }// Phone.prototype.size = '5.5inch';// let nokia = new Phone();// console.log(nokia.name);// // nokia.change();// console.log(nokia.size);class Phone{//静态属性static name = '手机';static change(){console.log("我可以改变世界");}}let nokia = new Phone();console.log(nokia.name);console.log(Phone.name);</script>
</body>
</html>

三、构造函数继承

ES5构造函数继承

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>对象继承</title>
</head>
<body><script>//手机function Phone(brand, price){this.brand = brand;this.price = price;}Phone.prototype.call = function(){console.log("我可以打电话");}//智能手机function SmartPhone(brand, price, color, size){Phone.call(this, brand, price);this.color = color;this.size = size;}//设置子级构造函数的原型SmartPhone.prototype = new Phone;SmartPhone.prototype.constructor = SmartPhone;//声明子类的方法SmartPhone.prototype.photo = function(){console.log("我可以拍照")}SmartPhone.prototype.playGame = function(){console.log("我可以玩游戏");}const chuizi = new SmartPhone('锤子',2499,'黑色','5.5inch');console.log(chuizi);</script>
</body>
</html>

ES6构造函数继承

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>类继承-2</title>
</head>
<body><script>class Phone{//构造方法constructor(brand, price){this.brand = brand;this.price = price;}//父类的成员属性call(){console.log("我可以打电话!!");}}class SmartPhone extends Phone {//构造方法constructor(brand, price, color, size){super(brand, price);// Phone.call(this, brand, price)this.color = color;this.size = size;}photo(){console.log("拍照");}playGame(){console.log("玩游戏");}call(){console.log('我可以进行视频通话');}}const xiaomi = new SmartPhone('小米',799,'黑色','4.7inch');// console.log(xiaomi);xiaomi.call();xiaomi.photo();xiaomi.playGame();</script>
</body>
</html>

四、子类对父类方法的重写

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>类继承-2</title>
</head>
<body><script>class Phone{//构造方法constructor(brand, price){this.brand = brand;this.price = price;}//父类的成员属性call(){console.log("我可以打电话!!");}}class SmartPhone extends Phone {//构造方法constructor(brand, price, color, size){super(brand, price);// Phone.call(this, brand, price)this.color = color;this.size = size;}photo(){console.log("拍照");}playGame(){console.log("玩游戏");}call(){console.log('我可以进行视频通话');}}const xiaomi = new SmartPhone('小米',799,'黑色','4.7inch');// console.log(xiaomi);xiaomi.call();xiaomi.photo();xiaomi.playGame();</script>
</body>
</html>

五、get和set

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>get 和 set</title>
</head>
<body><script>// get 和 set  class Phone{get price(){console.log("价格属性被读取了");return 'iloveyou';}set price(newVal){console.log('价格属性被修改了');}}//实例化对象let s = new Phone();// console.log(s.price);s.price = 'free';</script>
</body>
</html>
读取了");return 'iloveyou';}set price(newVal){console.log('价格属性被修改了');}}//实例化对象let s = new Phone();// console.log(s.price);s.price = 'free';</script>
</body>
</html>

ES6新特性16-Class相关推荐

  1. ES6新特性的学习和使用

    ES6新特性的学习和使用 本文是基于Windows 10系统环境,进行ES6新特性的学习和使用 Windows 10 React 一.ES6的新语法 (1) let和const ES6之后尽量少使用v ...

  2. javascript ES6 新特性之 扩展运算符 三个点 ...

    对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...

  3. ES6新特性(函数默认参数,箭头函数)

    ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...

  4. ES6新特性之了解ES6以及其发展历史

    ES6 新特性 现在使用主流的前端框架中,如ReactJS.Vue.js.angularjs等,都会使用到ES6的新特性,作为一名高级工程师而言,ES6也就成为了必修课,所以本套课程先以ES6的新特性 ...

  5. es6 获取对象的所有值_前端开发必备 - ES6 新特性之 Set和Map数据结构

    往期回顾: 前端开发必备 - ES6 新特性之 let 和 const 命令 前端开发必备 - ES6 新特性之 变量的解构赋值 前端开发必备 - ES6 新特性之 字符串的拓展 前端开发必备 - E ...

  6. html5 跳转参数不显示_HTML5、CSS3、ES6新特性总结

    前言:HTML5.CSS3.ES6新特性,可以说是基础前端的面试的必考题了,以下是关于新特性的基本总结. HTML5: 语义化的区块和段落元素:<section>,<article& ...

  7. 尚硅谷es6新特性笔记

    尚硅谷es6新特性笔记 一.let与const let的变量声明以及声明特性 const的变量声明以及声明特性 const.let.var 三者之间的区别 二.变量解构赋值 三.模板字符串 四.对象的 ...

  8. lsdyna如何设置set中的node_list_如何快速掌握es6+新特性及核心语法?

    国庆刚刚结束,我们开始一波新的学习进程吧. ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.作为前端必备技能,我们来快速开始吧 接 ...

  9. ES6新特性----面试

    ES6新特性 关键字 let关键字 const关键字 解构赋值 变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 用途 模板字符串 箭头函数 ...

最新文章

  1. python django windows_Python+Django在windows下的开发环境配置图解
  2. LNMP架构之PHP——MemCache对PHP页面的缓存加速优化
  3. 2019腾讯后台开发暑期实习面经汇总
  4. 代码变油画,精细到毛发,这个前端小姐姐只用HTML+CSS,让美术设计也惊叹丨GitHub热榜...
  5. OVS bridge和port(三十三)
  6. 快速寻找满足条件的两个数
  7. 神策数据王灼洲 徐缓:ID-Mapping 用户打通那些事儿
  8. OpenCV序列中创建矩阵cv :: Mat的实例(附完整代码)
  9. 在Windows 2003中集成RAID卡驱动
  10. OSError: [Errno 1] Operation not permitted 问题解决
  11. 特朗普为何喜欢马云?阿里巴巴开始拯救美国企业
  12. 3.2 选择最可能的句子
  13. SpringBoot(十四)_springboot使用内置定时任务Scheduled的使用(一)
  14. java componentorientation_Java JLabel.applyComponentOrientation方法代码示例
  15. vs c++ 判断注册表键值是否存在
  16. Python学习笔记—— 面向对象1. 面向对象基础
  17. 网络工程师考试内容纲要
  18. 微信指纹java.lang_微信小程序调用指纹验证
  19. Bellman_Ford模版
  20. 【持续更新】机器学习特征工程实用技巧大全

热门文章

  1. ubuntu12.04 飞鸽传书安装
  2. 黑魔法-认识 Docker
  3. 逻辑漏洞之越权、支付漏洞
  4. 爬虫之机器图像识别(ORC库)
  5. 用Python进行图文识别(OCR)
  6. 简单的下拉列表的二级联动、省市
  7. laravel如何实现请求图片或文件需用户验证
  8. tiny core linux网络连接,用Tiny Core Linux打造纯Firefox上网系统(概要)
  9. 百度cdn深度优化配置
  10. 企鹅形象与Linux[图]