Es6(class)
一、基础用法
//1传统面向对象 构造函数
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.sayName = function(){
console.log(this.name); //王大厨
}
var person = new Person('王大厨','26');
person.sayName(); 2.
//2.es6 中定义的类
class Person{
constructor(name,age){
this.name = name;
this.age = age;
}
sayName(){
console.log(this.name) //王二厨
}
}
var person = new Person('王二厨',22);
person.sayName();
//在ES6的“类”上面继续存在。事实上,类的所有方法都定义在类的prototype属性上面。 3.枚举
类的内部所有定义的方法,都是不可枚举的(non-enumerable)。跟es5中的差距。
4.constructor 方法
constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。
默认返回this,及实列对象。返回可以指定返回另外的对象。
类的构造函数,不使用new是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。
5.类的实列对象
生成类的实例对象的写法,与ES5完全一样,也是使用new命令。如果忘记加上new,像函数那样调用Class,将会报错。
var person = new Person('王二厨',22); //正确
var p1 = Person(); //报错 与ES5一样,实例的属性除非显式定义在其本身(即定义在this对象上),否则都是定义在原型上(即定义在Class上)。
6.不存在变量的提升
//Class不存在变量提升(hoist),这一点与ES5完全不同。
new Person(); //报错
class Person{} 7.立即执行的Class 类
let p = new class{
constructor(name){
this.name = name;
}
sayName(){
console.log(this.name);
}
}('王三厨'); 二、继承
Class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。(跟php中一样啊
相关推荐
Dullonjiang 2020-08-15
程松 2020-06-03
SoShellon 2013-06-01
yawei 2019-12-31
jackalwb 2013-08-20
pythonxuexi 2011-08-13
xhao 2019-11-06
zgwyfz 2019-11-04
zhangpan 2019-10-30
visionzheng 2018-02-09
kick 2011-11-05