但是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不可修改css中的属性,只能为指定的class的元素添加内联样式(style)原生JS:
var dom = document.getElementsByClassName('dtd')
for(var i=0,len=dom.lengthi<leni++){
dom[i].style.color = 'red'
}Jquery
$('.dtd').css({color:'red'})
js通过class属性删除节点用法实现:比如有test.html,div的结构如下:
<div class="columns" id="columns">
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div name="columnClear" class="contentClear" id="columnClear"></div>
</div>
可以通过class属性来删除指定的节点:
js常用方法:element.parentNode.removeChild(element)
或者直接定义删除的js方法:
function removeElementsByClass(className){
var elements = document.getElementsByClassName(className)
while(elements.length >0){
elements[0].parentNode.removeChild(elements[0])
}
}
这样只要传入class名,就可以删除这个class相关的子节点了。