ES6新增语法(四)——面向对象
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是系统提供的标准语法,可以忽略兼容性问题。
ES6新增语法(四)——面向对象的更多相关文章
- ES6新增语法(三)——面向对象
ES6中json的2个变化 简写:名字和值相同时,json可以可以简写 let a=12,b=5; let json = { a, b } console.log(json) // { a:12 , ...
- ECMAScript简介以及es6新增语法
ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的 ...
- 面向对象编程-终结篇 es6新增语法
各位,各位,终于把js完成了一个段落了,这次的章节一过我还没确定下面要学的内容可能是vue也可能是前后端交互,但无论是哪个都挺兴奋的,因为面临着终于可以做点看得过去的大点的案例项目了,先憋住激动地情绪 ...
- ES6新增语法和内置对象(let,const, Array/String/Set 扩展方法(解构赋值,箭头函数,剩余参数))
1.let ES6中新增的用于声明变量的关键字. let 声明的变量只在所处于的块级有效. 注意:使用 let 关键字声明的变量才具有块级作用域,var 关键字是不具备这个特点的. 1. 防止循环变量 ...
- 【ES6新增语法详述】
目录 1. 变量的定义 let const 2. 模版字符串 3. 数据解构 4. 函数扩展 设置默认值 箭头函数 5. 类的定义 class 6. 对象的单体模式 "@ ES6新增了关于变 ...
- ES6新增语法(一)——let、const、var的区别
ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ...
- 从零开始学 Web 之 ES6(六)ES6基础语法四
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- es6新增语法之`${}`
这是es6中新增的字符串方法 可以配合反单引号完成拼接字符串的功能 1.反单引号怎么打出来?将输入法调整为英文输入法,单击键盘上数字键1左边的按键. 2.用法step1: 定义需要拼接进去的字符串变量 ...
- ES6新增语法(二)——函数和参数
箭头函数 箭头函数:将原来函数的function关键字和函数名都删掉,并使用"=>"连接参数列表和函数体. 箭头函数语法: (参数1,参数2)=>{ 函数体 } 注意点 ...
随机推荐
- GO文件读写03---使用缓冲读写实现视频文件的拷贝
package main import ( "bufio" "fmt" "io" "os" ) /* ·使用缓冲读写实现 ...
- anaconda同时集成Python2 和 Python3
参考帖子,亲测有效: 利用anaconda同时使用python2和python3的方法 注意:最后一步是再对应的python环境中输入:conda install anaconda
- Anchor Boxes示例实战
Anchor Boxes示例实战 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的真实边界框.不同的模型可能使用不同的区域 ...
- 嵌入式Linux的OTA更新,基础知识和实现
嵌入式Linux的OTA更新,第1部分-基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一 ...
- 前台JS遍历Table的所有单元格数据内容
在日常开发过程中为了减少与后台服务器的交互次数,大部分的功能都会放到前台使用JS来完成. 例如:一个表中有ID(FOCUS_SEQ)和Name(COLUMNCTRL)两个字段,其中ID是自定义连续增长 ...
- antd组件库BackTop组件设置动态背景图片的问题
有这么一个需求,利用antd组件库中的BackTop组件的逻辑,但是自己写样式. 我的目标样式是:有两张图片,一张是normal(正常情况),一张是hover(悬停情况). 这时候就要用到css的动画 ...
- python中json.dump()与json.dumps()的区别
1.将python数据结构转换为json字符串(json.dumps()) >>> import json >>> data={'name':'pipi','age ...
- 【NX二次开发】查找部件中的对象 UF_OBJ_cycle_objs_in_part
返回所有层上指定类型部件中的所有对象,不管它们的当前显示状态如何.这个例程不返回表达式.指定对象.临时(系统创建的)对象或休眠对象.休眠对象指的是从模型中删除的对象例如,如果你混合了一条边,那么这条边 ...
- 【MySQL】常用的命令
连接数据库 mysql -u root -pmysql -u root -h 192.168.16.140 -p 创建数据库 create database dbstudents; 查看所有数据库 s ...
- Java IO学习笔记八:Netty入门
作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...