ES6-面向对象

1.老版的面向对象:

 1 function User(name,pass){
 2     this.name=name;
 3     this.pass=pass;
 4 }
 5 User.prototype.showName=function(){//用原型加方法
 6     console.log(this.name);
 7 }
 8 User.prototype.showPass=function(){//用原型加方法
 9     console.log(this.pass);
10 }
11 var ul=new User("blue","123456");
12 ul.showName();//blue
13 ul.showPass();//123456

老版的问题:

(1)类和构造函数是一个问题;

(2)散开了,先写了一个函数,方法是后加进去的。

2.新版的面向对象

 1 class User{
 2     constructor(name,pass){//作用相似于构造器
 3         this.name=name;
 4         this.pass=pass;
 5 }
 6 showName(){
 7     console.log(this.name);
 8 }
 9 showPass(){
10         console.log(this.pass);
11     }
12 }
13 var ul=new User("red","7890");
14 ul.showName();//red
15 ul.showPass();//7890            

(1)新增了class关键字,构造器和类分开了;

(2)class里直接加方法。

 3.老版的继承

 1 function User(name,pass){
 2     this.name=name;
 3     this.pass=pass;
 4 }
 5 User.prototype.showName=function(){//用原型加方法
 6     console.log(this.name);
 7 }
 8 User.prototype.showPass=function(){//用原型加方法
 9     console.log(this.pass);
10 }
11 //继承
12 function Vipuser(name,pass,level){
13     User.call(this,name,pass);
14     this.level=level;
15 }
16 Vipuser.prototype=new User();
17 Vipuser.prototype.constructor=Vipuser;
18 Vipuser.prototype.showLevel=function(){
19     console.log(this.level);
20 }
21 var v1=new Vipuser('blue','123456',3);
22 v1.showName();//blue
23 v1.showPass();//123456
24 v1.showLevel();//3

 4.新版的继承

 1 class User{
 2     constructor(name,pass){//作用相似于构造器
 3         this.name=name;
 4         this.pass=pass;
 5 }
 6 showName(){
 7     console.log(this.name);
 8 }
 9 showPass(){
10         console.log(this.pass);
11     }
12 }            
13 //继承
14 class Vipuser extends User{//extends关键字:继承父类
15     constructor(name,pass,level){
16         super(name,pass);//执行父类的构造函数
17         this.level=level;
18     }
19     showLevel(){
20         console.log(this.level);
21     }
22 }
23 var v1=new Vipuser('blue','123456',3);
24 v1.showName();
25 v1.showPass();
26 v1.showLevel();    

 5.面向对象的应用-React

React:

(1)组件化——class

(2)强依赖于jsx(也就是babel,browser.js)

 1 class Test extends React.Component{
 2   constructor(...args){//继承组件所有的属性
 3     super(...args);
 4 }
 5 render(){
 6     return <li>{{this.prop.str}}</li>
 7   }
 8 }
 9 window.onLoad=function(){
10   let oDiv=document.getElementById('div1');
11   ReactDom.render(
12     <ul>
13       <Test str='asd'></Test>
14       <Test str='fgh'></Test>
15     </ul>
16      oDiv
17    );
18 }    

猜你喜欢

转载自www.cnblogs.com/czh64/p/11941798.html