用es6的class关键字定义一个类
es6新增class关键字使用方法详解。
通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
实例讲解:
es5的定义类方法:
function extend(obj1,obj2){//合并对象属性的方法
for(var attr in obj2){
obj1[attr]=obj2[attr];
}
};
function Person(opt){
this.settings = {
'name':'jack',
'age':'30',
'sex':'male',
'eye':'Single eyelid',//Double-fold eyelids
'Height':'tall',//or Medium
'Weight':'fat', //or thin
}
extend(this.settings,opt);
};
Person.prototype.message=function(){
console.log(this.settings.name+"今年"+this.settings.age+'岁。'+'性别:'+this.settings.sex+"。特点:"+this.settings.eye+","+this.settings.Height+","+this.settings.Weight);
};
var p1=new Person({});
p1.message();
console.log(p1);
var p2 = new Person({
'name':'lily',
'age':'23',
'sex':'femal',
'eye':'Double-fold eyelids',//Double-fold eyelids
'Height':'Medium',//or Medium
'Weight':'Medium', //or thin
});
p2.message();
console.log(p1.__proto__ === p2.__proto__)//true;
es6的定义类方法:
class Person{
constructor(opt) {
this.settings={
'name':'jack',
'age':'30',
'sex':'male',
'eye':'Single eyelid',//Double-fold eyelids
'Height':'tall',//or Medium
'Weight':'fat', //or thin
};
extend(this.settings,opt);
}
message(){
console.log(this.settings.name+"今年"+this.settings.age+'岁。'+'性别:'+this.settings.sex+"。特点:"+this.settings.eye+","+this.settings.Height+","+this.settings.Weight);
}
}
var p1=new Person({});
p1.message();
console.log(p1);
var p2 = new Person({
'name':'lily',
'age':'23',
'sex':'femal',
'eye':'Double-fold eyelids',//Double-fold eyelids
'Height':'Medium',//or Medium
'Weight':'Medium', //or thin
});
p2.message();
console.log(p1.__proto__ === p2.__proto__)//true;
//两个原型链是一样的说明是指向的同一个内存。
如何实现类的继承?
es5实现类的继承方法:
//传统的继承的写法。
function Pchild(opt){
Person.call(this,opt);//属性通过call:this方式继承。
}
extend(Pchild.prototype,Person.prototype );//方法通过extend继承。
Pchild.prototype.languge=function(){
console.log(this.settings.name+'come from'+this.settings.country+'speak:'+this.settings.language);
}
var c1 = new Pchild({
'name':'licy',
'age':'23',
'sex':'femal',
'eye':'Double-fold eyelids',//Double-fold eyelids
'Height':'Medium',//or Medium
'Weight':'Medium', //or thin
'country':'canada',
'language':'English'
});
c1.message();
c1.languge()
console.log(c1);
es6实现继承的方法:使用extends关键字。
class Pchild extends Person{
languge(){
console.log(this.settings.name+'.come from:'+this.settings.country+'speak:'+this.settings.language+"后面是继承父级的方法");
super.message();
}
}
var c1 = new Pchild({
'name':'licy',
'age':'23',
'sex':'femal',
'eye':'Double-fold eyelids',//Double-fold eyelids
'Height':'Medium',//or Medium
'Weight':'Medium', //or thin
'country':'canada',
'language':'English'
});
c1.message();
c1.languge()
console.log(c1);
console.log(p2);
es6的继承使用extends关键字来继承父级,使用super来调用父级的方法。
用es6的class关键字定义一个类的更多相关文章
- 怎样用Javascript定义一个类
其实Javascript中没有类这个定义,但是有类这个概念.很多人都写过这样的代码,对,没错,就是如下代码,清晰的不能再清晰了,就是一个关键字 function,然后定义一个方法名,方法名后紧跟一对括 ...
- Java分享笔记:自定义枚举类 & 使用enum关键字定义枚举类
在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计.从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类.这种枚举类有自 ...
- Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...
- JAVA 类的定义(定义一个类,来模拟“学生”)
package Code413;/*定义一个类,来模拟“学生”属性 (是什么) 姓名 年龄行为(能做什么) 吃饭 睡觉 学习对应到Java的类当中 成员变量(属性) String nanme; //姓 ...
- Python3.x:定义一个类并且调用
Python3.x:定义一个类并且调用 1,定一个类Shrjj(其中有属性:name, jjzt,fbsjj,etf,lof,fjlof): class Shrjj(object): def __in ...
- 定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, 随机的10个字母和数字的组合;字母和数字的范围可以指定,类似(1~100)(A~z)
#习题2:定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, #随机的10个字母和数字的组合:字母和数字的范围可以指定 class RandomString(): #随机数选择的范围作为 ...
- 103-PHP定义一个类
<?php class ren{ //定义人类 } class mao{ //定义猫类 } new ren(); //实例化人类 new mao(); //实例化猫类 new mao(); // ...
- 定义一个类Point,代表一个点,public属性有x和y,方法有显示点坐标 show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。
这个题让我更加明白了类创建对象的实质 代码中用到:1.对象作形参;2.对象作返回值 以下用代码具体分析: class Point1{ public double x; public double y; ...
- 按要求编写一个Java应用程序: (1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。 (2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性, 和计算体积的方法。 (3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、 宽、高,输出其底面积和体积。
package jvxing; public class Jvxing { //成员变量 private double width; private double chang; public doub ...
随机推荐
- Jquery Mobile笔记之一
jQuery Mobile 在你的网页中添加 jQuery Mobile 你可以通过以下几种方式将jQuery Mobile添加到你的网页中: 从 CDN 中加载 jQuery Mobile (推荐) ...
- Java基础---多态、内部类、异常、包
第一讲 多态 多态可以理解为事物存在的多种体现形态. 例:动物中猫,狗.猫这个对象对应的类型是猫类型,如:猫 x = new猫(); 同时猫也是动物中的一种,也可以把猫称为动物.动物 y = ...
- [2014-08-24]为 Xamarin Studio 创建的 Asp.Net Mvc 项目配置 gitignore
今天在尝试 Mac 下使用 Xamarin Studio (以下简称XS) 开发 Asp.Net Mvc 项目,发现XS没启用版本控制,故自己去命令行下使用 git init,想到需要一个.gitig ...
- JSON取值(key是中文或者数字)方式详解
JSON取值(key是中文或者数字)方式详解 先准备一个json对象用于演示 var json = {'name':'zhangsan', '年龄':23, 404:'你可能迷路了'}; 使用JS中w ...
- 插入排序与希尔排序Java实现
public class TestMain { public static void main(String[] args) { Integer[] a = new Integer[5000]; fo ...
- 图论中DFS与BFS的区别、用法、详解…
DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...
- 详解 mpls vpn 的实现
MPLS VPN的实现 一.实验目的 该实验通过MPLS VPN的数据配置,使学生掌握路由器相关接口的IP地址设置.路由协议的配置以及MPLS VPN的完整的创建过程, 从而加深对IP网络的IP编址. ...
- 【深入Java虚拟机】之八:Java垃圾收集机制
转载请注明出处:http://blog.csdn.net/ns_code/article/details/18076173 对象引用 Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了J ...
- MySQL (三)-- 字段属性、索引、关系、范式、逆规范化
1 字段属性 主键.唯一键和自增长. 1.1 主键 主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复. 一张表只能有最多一个主键. 1.1 ...
- 团队作业8——第二次项目冲刺(Beta阶段)Day7——5.26
展开圆桌式会议: 会议内容:1.汇总BETA阶段的成果.2.针对BETA阶段的大家的获得的收获进行了讨论.3.对整个团队项目的过程进行了总结.每个人的工作分配: 队员 今日任务 贡献比 林燕 做最后测 ...