JavaScript中的类与其他语言有何不同
## 文章结构:
一 js语言特点
二 js的类
三 js实现继承
一 js是一个基于面向对象的单线程的脚本语言
JavaScript集成了许多其他语言的精华,其中就有面向对象(类 实例对象 继承 封装 多态)
JavaScript之所以是基于面向对象,而不是面向对象,是因为它跟面向对象用法一样,但底层思想是原型的思想
因此,ES6为了更像面向对象语言的语法特征,就提出了class的用法
二 js的类
1,声明类
class Person{
constructor(arg1,arg2){
this.age=arg1; //为Person类创建的对象添加成员
this.arg2=arg2;
this.life=1;
}
say(){} //创建的对象的原型对象上添加的方法
static a=10 //静态属性
static eat(){} //静态方法
b=12 //直接在Person类创建的对象上添加属性
}
var p1=new Person(1,2)
console.log(Person.a) //访问静态属性 10
console.log(typeof p1) //object
constructor是官方提供,必须写这个单词,可以不写,系统会默认内置一个空的constructor
p1在创建时,constructor函数就会运行,constructor内部的this.age是为用Person类创建的对象p1添加成员,该成员的值在这里为传递进来的参数1
static为class添加静态方法和属性
什么叫静态方法?
-只能由class访问的方法,即本例中只能由Person.eat访问静态方法,Person.a访问静态属性
2,匿名类
var Person2=class{}
var f1=new fn()
// console.log(f1)
当class内部没有constructor时
class Child{
可以不写,系统会默认内置一个空的constructor
}
var p1=new Child()
js没有类 是原型的思想设计的类,但是学习和使用这个技术时,心中要用类的思想学习
js的类本质是一个函数,但是不能像使用函数一样使用类,比如在类{}中写for循环等
三,继承
class Person{
life=1
}
class Student extends Person{
constructor(arg){
super(arg) //让其student类创建出的对象的功能有Person类的功能
}}
要实现继承的功能,super(arg)相当于在堆内存中开辟出一块堆内存,其上有Person类的所有功能,在其基础上实现Student类,从而达到继承的效果,所有super(arg)要放在constructor函数体内的第一行
若没有super,则会报错:
浙公网安备 33010602011771号