概述
本篇文章给大家带来了关于javascript的相关知识,E其中主要介绍了关于class类的相关问题,ES6引入了class类这个概念,通过class关键字可以定义类,这就是更符合我们平时所理解的面向对象的语言,下面一起来看一下,希望对大家有帮助。
【相关推荐:javascript视频教程、web前端】
class简介
传统的JS只有对象的概念,没有class类的概念,因为JS是基于原型的面向对象语言,原型对象特点就是将属性全部共享给新对象。
ES6引入了class类这个概念,通过class关键字可以定义类,这就是更符合我们平时所理解的面向对象的语言。
class Person{ //定义一个名为Person的类
// 构造函数,用来接受参数
constructor(x,y){
this.x = x; //this代表的是实例对象
this.y = y;
}
todoSome(){ //这是个类的方法,不需要加function,有多个方法也不用逗号隔开
alert(this.x + "的年龄是" +this.y+"岁");
}
}
export default Person;
登录后复制
静态方法和静态属性
静态方法和静态属性,是使用static关键字的属性和方法
静态方法
static classMethod(){
console.log('123456')
}
登录后复制
- 静态方法不会被子类继承,子类不能调用
- 静态方法中的this,指向的是类class,不是类的实例。因此静态方法只能通过类名来调用,不能通过实例来调用
let p = new Point();
p.classMethod(); // 报错
登录后复制
静态属性
static prop = 1 ; // 静态属性
登录后复制
- 静态属性不能被子类继承,子类不能调用
- 静态属性只能通过类名来调用,不能通过类的实例来调
class继承extends
- class可以用过extends关键字来继承
- ES6继承,子类构造函数中必须使用super()。因为ES6继承是先将父类实例对象的属性和方法,加到this上面,然后再调用子类的构造函数修改这个this
- 如果子类没有定义constructor方法,super()会默认添加上
- 子类会继承父类的方法和属性,但是静态方法和属性必须通过子类的类名来调用
import classtest from "./classtest"; //先引入父类
class Man extends classtest{
constructor(x,y){ //构造函数尽量与父类参数保持一致
super(); //利用super()关键字,这个必须放在子类构造函数中的第一位置
this.x = x;
this.y = y;
}
}
export default Man;
登录后复制
class的取值函数getter和存值函数setter
getter、setter就是给class的属性读值、传值用的。
取值函数getter和存值函数setter可自定义赋值和取值行为,当一个属性只有getter没有setter的时候,这个属性就是只读属性,不能赋值,第一次初始化也不行。
如果变量定义为私有的(定义在类的花括号外面),就可以只使用getter不使用setter。
let data=[1,2,3,4]; //放在类外面,属于私有变量,可以只读取
class Person{
// 构造函数
constructor(x,y){
this.x = x;
this.y = y;
}
get x(){
console.log('获得name');
return this._name; //get读取属性
}
set x(x){
console.log("设置name");
this._name=x; //set给属性赋值
}
get data(){
return data; //只读属性,属性返回的值只能是私有变量
}
todoSome(){
alert(this.x + "的年龄是" +this.y+"岁");
}
static dayin(){
alert("dayin");
}
}
export default Person;
登录后复制
如何使用:
var test= new this.$myutils.classtest('haha','18');
test.x="haha3"; //改变了实例化时候的x的值
test.todoSome(); //输出:haha3的年龄是18岁。这里就已经不是实例化时候的haha了
console.log(test.data); //结果:打印[1,2,3,4]
登录后复制
注意事项:
1、在类中定义方法时候,不可以给方法加上function关键字,因为JS中构造函数是用function定义的,两个隔开。
2、所有方法不要用逗号隔开,否则会报错。
【相关推荐:javascript视频教程、web前端】
以上就是归纳整理ES6中的class类知识点的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是活泼玉米为你收集整理的归纳整理ES6中的class类知识点的全部内容,希望文章能够帮你解决归纳整理ES6中的class类知识点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复