1、类的定义
es5中类定义:
<script>
// es5类定义
function Person(name,age){
this.name = name;
this.age = age;
};
// es5类方法定义
Person.prototype.getAge = function(){
return this.age;
}
// es5类实例化
var p = new Person("张三",22);
console.log(p.name);
console.log(p.getAge());
</script>
es6中类定义:es6中的类就比较像传统java等语言了
<script>
// es6类定义
class Person {
//constructor是默认方法
constructor(name, age) {
// 类属性
this.name = name;
this.age = age;
}
// es6方法定义
getAge() {
return this.age;
}
say1(something) {
console.log(`say1,${something}`);
}
// 类静态方法
static say1(something) {
console.log(`static say1,${something}`);
}
static sayHi(something) {
// 注意静态中的this代表的是静态方法、属性,而不是实例方法、属性
this.say1(something);
}
};
// es6类实例化
var p = new Person("张三", 22);
// 获取类属性
console.log(p.name);
// 调用类方法
console.log(p.getAge());
// 调用类静态方法
Person.sayHi("hi");
// 类静态属性,直接可以进行set和get,不需要在类中进行定义,这一点与java等语言不同
Person.sex = "男";
console.log(Person.sex);
</script>
2、类的继承
类的继承和java一样用extends关键字实现
<script>
// es6类定义
class Person {
//constructor是默认方法
constructor(name, age) {
// 类属性
this.name = name;
this.age = age;
}
// es6方法定义
getAge() {
return this.age;
}
say1(something) {
console.log(`say1,${something}`);
}
// 类静态方法
static say1(something) {
console.log(`static say1,${something}`);
}
static sayHi(something) {
// 注意静态中的this代表的是静态方法、属性,而不是实例方法、属性
this.say1(something);
}
};
class Student extends Person {
constructor(name, age, shcool) {
super(name, age);
this.shcool = shcool;
}
getShcool() {
return this.shcool;
}
}
// es6类实例化
var p = new Person("张三", 22);
// 获取类属性
console.log(p.name);
// 调用类方法
console.log(p.getAge());
// 调用类静态方法
Person.sayHi("hi");
// 类静态属性,直接可以进行set和get,不需要在类中进行定义,这一点与java等语言不同
Person.sex = "男";
console.log(Person.sex);
var s = new Student("小明", 12, "明德小学");
console.log(s.name);
console.log(s.getShcool());
</script>