6的新功能,如(类)和继承(扩展)的相关概念和用法分析
1。类(类)
1。基本语法
Javascript语言的传统方法是通过构造函数定义和生成新对象。
函数点(x,y){
这个;
这个,y = y;
}
(point.prototype.tostring =功能){
返回(+,+,+;
};
var =新点(1, 2);
6提供了一个方法,更接近传统的语言介绍了类的概念作为对象的模板,类可以通过class关键字定义的。基本上,6的类可以被视为只是一个语法糖。它的大部分功能可以通过ES5。新课的写作方法,不仅使写作对象的原型更清晰、更喜欢面向对象编程语法。上面的代码重写ES6类,这是继。
类定义
类点{
构造函数(x,y)构造函数构造方法
这个;
这个,y = y;
}
ToString(){
返回(+,+,+;
}
}
var =新点(1, 2);
构造函数的原型属性继续对6类存在。事实上,所有的类的方法仍然是对原型的类属性定义。
2.constructor方法
构造函数方法是类的默认方法,当新命令生成对象实例时会自动调用它。类必须有构造函数方法,如果没有显式定义,默认情况下会添加空构造函数方法。
二、继承(扩展)
类可以通过extends关键字继承,这比ES5的继承通过修改原型链更清晰,更方便。
类Colorpoint延伸点{
构造函数(x,y,颜色){
超级(x,y);调用父类构造函数(x,y)
this.color =颜色;
}
ToString(){
Return + this.color + super.toString (''); / / call the parent class (toString)
}
}
在上面的代码中,在构造函数的方法超级关键词和toString方法,它代表了父类的构造函数,用于创建该对象的父类。
子类必须在构造函数方法中调用超级方法,否则新的实例将被错误地报告。这是因为子类没有它自己的对象,而是继承父类的这个对象,然后处理它。如果不调用超级方法,子类将不能得到这个对象。
三。主构造函数的继承
一个土生土长的构造函数是一个内置的语言构造,这是通常用于生成数据结构。ECMAscript的主要建设者大致如下。此前,这些本土的构造函数不能被继承。
布尔()
数()
字符串()
阵列()
(日期)
()函数
正则表达式()
错误()
对象()
6允许继承原构造函数定义子类的实例对象,因为ES6这个新建的父类,然后修改本的子类的构造函数,这样的行为都可以被继承的父类。以下是传承阵列实例。
类数组MyArray延伸{
构造函数(…args){
超(…args);
}
}
var arr =新MyArray();
ARR { 0 } = 12;
arr.length / / 1
arr.length = 0;
ARR { 0 } / /未定义
上面的代码定义了一个数组MyArray类,继承的构造函数,所以你可以生成从数组MyArray实例。这意味着6可以自定义原生数据结构类,如数组、字符串等,其中ES5不能做。
四类生成方法
如果在方法之前添加星号(*),则意味着该方法是生成器函数。
Class Foo {
构造函数(…args){
this.args =参数;
}
{符号。迭代器}(){
为了(让精本。args){
精氨酸产量;
}
}
}
(X为新富(你好',‘')){
console.log(X);
}
/世界
在上面的代码中,有之前的Foo类的symbol.iterator方法星号,表明该方法是一个函数发生器,symbol.iterator方法返回一个Foo类的默认的遍历,并为…回路自动调用ergodicer。
五类静态方法
类是与实例等价的原型,并且在类中定义的所有方法都由实例继承。如果在方法之前添加静态关键字,则意味着该方法不由实例继承,而是通过类直接调用,称为静态方法。
类Foo {
静态类(){
return'hello;
}
}
(foo类) / /你好
新富();
Foo.classMethod()
foo.classmethod不是功能 / /列表:
在上面的代码中,有在Foo类的类方法的关键字,说明该方法是静态方法,可以直接调用foo类(foo.classmethod())而不是调用Foo类的实例。如果静态方法是在实例上调,错误将抛出的方法不存在。
父类的静态方法可以由子类继承。
类Foo {
静态类(){
return'hello;
}
}
类栏扩展{ {
}
(酒吧。类); / /你好
在上面的代码中,父类富有一个静态方法,而子类bar可以调用这个方法。
更多关于Javascript相关感兴趣的读者的内容可以看到特殊站:ecmascript6(6),Javascript教程总结
希望本文能对javascript程序设计有所帮助。