这篇文章主要讲解了“class是es6的新特性吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“class是es6的新特性吗”吧!class是es6新特性。在ES6中,class(类)作为对象的模板被引入,可以通过class关键字定义类;新的class写法让对象原型的写法更加清晰、更像面向对象编程的语法,也更加通俗易懂。类(class)是ECMAScript中新的基础性语法糖结构,虽然ES6类表面上看起来可以支持正式的面向对象编程,但实际上它背后使用的仍然是原型和构造函数的概念,让对象原型的写法更加清晰、class是es6新特性。在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。ES6 提供了更接近传统语言的写法,新引入的class关键字具有正式定义类的能力。类(class)是ECMAScript中新的基础性语法糖结构,虽然ECMAScript 6类表面上看起来可以支持正式的面向对象编程,但实际上它背后使用的仍然是原型和构造函数的概念,让对象原型的写法更加清晰、更像面向对象编程的语法。传统的JS只有对象的概念,没有class类的概念,因为JS是基于原型的面向对象语言,原型对象特点就是将属性全部共享给新对象。ES6引入了class类这个概念,通过class关键字可以定义类,这就是更符合我们平时所理解的面向对象的语言。
classPerson{//定义一个名为Person的类 //构造函数,用来接受参数 constructor(x,y){ this.x=x;//this代表的是实例对象 this.y=y; } todoSome(){//这是个类的方法,不需要加function,有多个方法也不用逗号隔开 alert(this.x+"的年龄是"+this.y+"岁"); } } exportdefaultPerson;
静态方法和静态属性,是使用static关键字的属性和方法2.1 静态方法
staticclassMethod(){ console.log('123456') }
静态方法不会被子类继承,子类不能调用静态方法中的this,指向的是类class,不是类的实例。因此静态方法只能通过类名来调用,不能通过实例来调用
letp=newPoint(); p.classMethod();//报错
2.2 静态属性
staticprop=1;//静态属性
2.2 静态属性
静态属性不能被子类继承,子类不能调用静态属性只能通过类名来调用,不能通过类的实例来调class可以用过extends关键字来继承ES6继承,子类构造函数中必须使用super()。因为ES6继承是先将父类实例对象的属性和方法,加到this上面,然后再调用子类的构造函数修改这个this如果免费云主机域名子类没有定义constructor方法,super()会默认添加上子类会继承父类的方法和属性,但是静态方法和属性必须通过子类的类名来调用
importclasstestfrom"./classtest";//先引入父类 classManextendsclasstest{ constructor(x,y){//构造函数尽量与父类参数保持一致 super();//利用super()关键字,这个必须放在子类构造函数中的第一位置 this.x=x; this.y=y; } } exportdefaultMan;
getter、setter就是给class的属性读值、传值用的。取值函数getter和存值函数setter可自定义赋值和取值行为,当一个属性只有getter没有setter的时候,这个属性就是只读属性,不能赋值,第一次初始化也不行。如果变量定义为私有的(定义在类的花括号外面),就可以只使用getter不使用setter。
letdata=[1,2,3,4];//放在类外面,属于私有变量,可以只读取 classPerson{ //构造函数 constructor(x,y){ this.x=x; this.y=y; } getx(){ console.log('获得name'); returnthis._name;//get读取属性 } setx(x){ console.log("设置name"); this._name=x;//set给属性赋值 } getdata(){ returndata;//只读属性,属性返回的值只能是私有变量 } todoSome(){ alert(this.x+"的年龄是"+this.y+"岁"); } staticdayin(){ alert("dayin"); } } exportdefaultPerson;
如何使用:
vartest=newthis.$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、所有方法不要用逗号隔开,否则会报错。感谢各位的阅读,以上就是“class是es6的新特性吗”的内容了,经过本文的学习后,相信大家对class是es6的新特性吗这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!
本篇内容主要讲解“Vue如何用Ajax实现跨域请求”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue如何用Ajax实现跨域请求”吧!一.设置config/index.js || proxyTable添加二.mia…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。