1.classES6提供了一种更接近传统语言的写法,引入了Class(类)作为对象模板的概念。使用class关键字,可以定义一个类。基本上,ES6类可以看作只是一个语法糖。它的大部分功能都可以通过ES5来实现。新的类写法只是让对象原型的写法更清晰,更像面向对象编程的语法。特点1.类的所有方法都定义在类的原型属性上classPoint{constructor(){//...}}==Point.prototype={constructor(){},};2.Point。prototype.constructor===Point//true3、定义“类”方法时,前面不用加关键字function,把函数定义放在里面即可。4.类中没有变量提升器,这和ES5完全不一样。5.如果一个类的方法中包含this,则默认指向该类的实例。6、如果在方法前加static关键字,表示该方法不会被实例继承,而是直接通过类调用。称为“静态方法”。7.写法ES5写法functionPoint(x,y){this.x=x;this.y=y;}Point.prototype.toString=function(){return'('+this.x+','+this.y+')';};varp=newPoint(1,2);ES6classPoint{constructor(x,y){this.x=x;这个.y=y;}toString(){return'('+this.x+','+this.y+')';}}2.constructor()——构造器方法这是ES6对类的默认方法,在通过new命令生成对象实例时自动调用。而且,这个方法必须存在于类中。如果没有显式定义,默认添加一个空的constructor()方法。1、constructor方法默认返回实例对象(即this)classPoint{constructor(x,y){this.x=x;这个.y=y;}}point.hasOwnProperty('x')//true2.super()-继承在类方法中,使用extends关键字实现继承。子类必须在constructor()中调用super()方法,否则新建实例时会报错。super方法必须在构造函数中调用,因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行处理,super代表父类的构造函数。super虽然代表了父类A的构造函数,但是它返回的是子类B的实例,也就是super里面的this引用了B,所以这里的super()等价于A.prototype.constructor.call(this,props)。A类{}B类扩展A{constructor(){super();//ES6要求子类的构造函数必须执行一次super函数,否则会报错。}}3.如果要在构造函数中使用this.props,必须给super加上参数:super(props);3.React.js中的ref和DOM操作顺便说一下,其实可以给组件标签添加ref
