类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <script type="text/javascript"> class Person{ constructor(name,age){ //构造器方法 //构造器中的this是类的实例对象 this.name=name this.age=age } //一般方法 speak(){ //speak方法放在了类的原型对象上,供实例使用 console.log(`我叫$(this.name),我的年龄是$(this.age)`) } } class Student extends Person{ constructor(name,age,grade){ super(name,age) this.grade=grade; } speak(){ console.log(`我叫${this.name},我的年龄是${this.age},我的年纪是${this.grade}`) } } const p1=new Person('tom',18) const p2=new Person('jerry',19) const s1=new Student('zhang',15,'高一') p1.speak() p2.speak() s1.speak() </script>
|
注:
1、类的构造器不是一定要写的
2、如果a类继承于b类,且a类中写了构造器,则a类构造器中super必须要调用。
3、类定义的方法,都放在类的原型对象上,共实例使用
创建类组件
1 2 3 4 5 6 7 8 9 10 11 12 13
| <script type="text/babel"> class MyComponent extends React.Component{ //这里Component的c要大写 //render是放在MyComponent原型对象上,供实例使用的 render(){ return{ //render中的this是MyComponent的实例对象 <h2>我是类定义的组件</h2> } } } ReactDOM.render(<MyComponent/>,document.getElementById('test')) </script>
|
执行ReactDOM.render(<MyComponent/>)之后。发生了什么?
1、react解析组件标签,找到MyComponent组件
2、发现组件是使用类定义的,随后new出该类的实例,并通过该实例调用到原型上的render方法
3、将render返回的虚拟dom转为真实dom,随后呈现在页面中。