浅析js class

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析js class相关的知识,希望对你有一定的参考价值。

参考技术A 在 ES6 规范中,引入了 class 的概念。使得 JS 开发者终于告别了,直接使用原型对象模仿面向对象中的类和类继承时代。

但是JS 中并没有一个真正的 class 原始类型, class 仅仅只是对原型对象运用语法糖。所以,只有理解如何使用原型对象实现类和类继承,才能真正地用好 class。

本质上js中class其实是构造函数的另一种写法,使之更加直观的展现构造器中的各项属性

基本使用

注意点:
(1)constructor是一个构造函数方法,创建对象时自动调用该方法
(2)constructor是类必须的一个属性,少了他类的创建会报错,如果我们不写的话js会给他自动加上
(3)this指的是实例化对象,就相当于构造函数中的this,指向的是当前创建的对象
(4)类中声明函数不需要function关键字,直接函数名即可
(5)方法之间不需要都好分割,加了会报错

因为本质上是构造函数的另一种写法,所以他的使用和一些其他特性都是和构造函数相似的。比如调用都是通过new关键字 并且class也存在prototype这个属性,通过她我们可以给这个类的原型对象定义属性。通过这个类创建出的对象一样会有这个属性

类的继承

子类继承基类后,同名的属性会覆盖掉基类,以上例子中两个类都有sayName函数,但是调用的时候输出的是子类的sayName。

一个构造函数可以使用 super 关键字来调用一个父类的构造函数。

同时类也支持get和set操作

浅析原生js模仿addclass和removeclass

 1 //判断有没有class
 2 hasClass(elements, cName) {
 3   return !!elements.className.match(new RegExp("(\s|^)" + cName + "(\s|$)")); // ( \s|^ ) 判断前面是否有空格 (\s | $ )判断后面是否有空格 两个感叹号为转换为布尔值 以方便做判断
 4 },
 5 //移除class
 6 removeClass(elements, cName) {
 7   if (this.hasClass(elements, cName)) {
 8     elements.className = elements.className.replace(new RegExp("(\s|^)" + cName + "(\s|$)"), " "); // replace方法是替换
 9   }
10 },
11 //添加class
12 addClass(elements, cName) {
13   if (!this.hasClass(elements, cName)) {
14     elements.className += " " + cName;
15   }
16 },

 

以上是关于浅析js class的主要内容,如果未能解决你的问题,请参考以下文章

[转]浅析/sys/class目录的创建流程

java浅析反射

浅析排序方法

浅析Java常量池

浅析多线程的对象锁和Class锁

javaWeb应用部署结构浅析