ES6中json的2个变化

  • 简写:名字和值相同时,json可以可以简写
let a=12,b=5;
let json = {
a,
b
}
console.log(json) // { a:12 , b:5 }
  • 省略function:json中的函数可以简写
let persen ={
name:'倩倩',
age:18,
showName(){
alert(this.name)
}
}
persen.showName()

ES6与传统面向对象

传统面向对象:类和构造函数在一起,为对象添加方法时使用prototype。传统面向对象实例如下:

function Person(name,age){
this.name = name;
this.age = age
}
Person.prototype.showName = function(){
console.log('我叫',this.name)
}
Person.prototype.showAge = function(){
console.log('今年',this.age,'岁')
}
var p = new Person('倩倩',18)
p.showName()
p.showAge()

ES6面向对象:将类和构造函数分开。

类:class

构造函数:constructor指生成完实例之后,自己就执行的函数。

class Person{
constructor(name,age){
this.name = name;
this.age = age;
}
//给对象添加方法
showName(){
console.log('我叫',this.name)
}
showAge(){
console.log('今年',this.age,"岁")
}
}
var p =new Person('倩倩',18);
p.showName();
p.showAge()

面向对象的继承

传统面向对象的继承:

  • 使用apply方法,子类继承父类全部属性。
  • 使用prototype方法,子类继承父类的方法。

传统面向对象的继承实例如下:

function Person(name,age){
this.name = name;
this.age = age
}
Person.prototype.showName = function(){
console.log('我叫',this.name)
}
Person.prototype.showAge = function(){
console.log('今年',this.age,'岁')
}
function Worker(name,age,job){
Person.apply(this,arguments)//继承属性
this.job = job
}
Worker.prototype = new Person();//继承方法
Worker.prototype.showJob = function(){
console.log('工作是',this.job);
}
var w = new Worker('倩倩',18,'打杂');
w.showName();
w.showAge();
w.showJob();

ES6面向对象继承:

使用extends实现子类对父级的继承,super()将父类的属性继承过来。

class Person{
constructor(name,age){
this.name = name;
this.age = age;
}
showName(){
console.log('我叫',this.name)
}
showAge(){
console.log('今年',this.age,"岁")
}
}
class Worker extends Person {
constructor(name,age,job){
super(name,age)
this.job = job
}
showJob(){
console.log('工作是',this.job)
}
}
var w = new Worker('倩倩',18,'打杂');
w.showName();
w.showAge();
w.showJob()

关于super:

子类中有constructor,内部就要有super,因为子类没有自己的this对象,需要继承父类的this对象。

这里的super(name,age)就是调用父类的构造函数。

super 虽然代表了Person的构造函数,但是返回的是子类Worker的实例。

ES6面向对象优点

  • ES6面向对象相比传统面向对象,语法简化
  • ES6语法标准、统一,适合大项目开发,不易产生冲突。
  • ES6是系统提供的标准语法,可以忽略兼容性问题。

最新文章

  1. Struts2 OGNL 自动转换Date类型的一些注意事项
  2. machine learning 笔记 normal equation
  3. hihoCoder #1199 : Tower Defense Game ——(树型dp)
  4. VS 2008 生成操作中各个选项的差别
  5. 【POJ 3525】Most Distant Point from the Sea(直线平移、半平面交)
  6. mongodb配置
  7. 2016年 Delphi Roadmap
  8. 安装"MySQLdb"一波三折.
  9. CSS Clip属性
  10. Sass函数--颜色函数--HSL函数
  11. 关于发布DIPS的MVC项目的IIS 7.0环境配置的方法
  12. 在Win8上安装pyinstaller打包python成为可执行文件
  13. 操作IFRAME及元素
  14. Tcl与Design Compiler (六)——基本的时序路径约束
  15. Qt---自定义界面之 Style Sheet
  16. linux定时器crontab
  17. GNU autotools自动生成Makefile 介绍
  18. android自定义viewgroup初步之一----抽屉菜单
  19. Presto服务发现(Discovery Service)
  20. 错误 java.lang.ClassCastException: com.xx cannot be cast to ResourceBundle

热门文章

  1. Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
  2. AI基础架构Pass Infrastructure
  3. 深度学习框架:GPU
  4. 聊一聊.NET Core结合Nacos实现配置加解密
  5. 【曹工杂谈】Mysql客户端上,时间为啥和本地差了整整13个小时,就离谱
  6. 合宙Luat | 一文读懂LuaTask延时,看我如何从《射雕英雄传》角度分析。
  7. java并发编程JUC第十二篇:AtomicInteger原子整型
  8. 【dp】动归总结
  9. Android一个炫酷的树状图组织架构图开源控件实现过程
  10. 感知机与支持向量机 (SVM)